From 1c5a5e7229bc7944fce21348e029a36f13be9632 Mon Sep 17 00:00:00 2001 From: snewcomer Date: Sat, 22 Dec 2018 22:45:39 -0800 Subject: [PATCH 1/8] Configurable json library --- lib/ueberauth/strategy/twitter.ex | 28 +++++++++++++++++++++++-- lib/ueberauth/strategy/twitter/oauth.ex | 4 ++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/lib/ueberauth/strategy/twitter.ex b/lib/ueberauth/strategy/twitter.ex index 3b279c0..46279fa 100644 --- a/lib/ueberauth/strategy/twitter.ex +++ b/lib/ueberauth/strategy/twitter.ex @@ -10,6 +10,30 @@ defmodule Ueberauth.Strategy.Twitter do alias Ueberauth.Auth.Extra alias Ueberauth.Strategy.Twitter + @json_library Application.get_env(:ueberauth, :json_library, Ueberauth.Config.json_library()) + unless Code.ensure_loaded?(@json_library) do + IO.puts(""" + The json_library '#{inspect(@json_library)}' does not appear + to be available. A json library is required + for Ueberauth to operate. Is it configured as a + dependency in mix.exs? + In config.exs your expicit or implicit configuration is: + config ueberauth, + json_library: #{inspect(@json_library)} + In mix.exs you will need something like: + def deps() do + [ + ... + {:#{String.downcase(inspect(@json_library))}, :version} + ] + end + """) + + raise ArgumentError, + "Json library #{String.downcase(inspect(@json_library))} does " <> + "not appear to be a dependency" + end + @doc """ Handles initial request for Twitter authentication. """ @@ -105,13 +129,13 @@ defmodule Ueberauth.Strategy.Twitter do {:ok, %{status_code: 401, body: _, headers: _}} -> set_errors!(conn, [error("token", "unauthorized")]) {:ok, %{status_code: status_code, body: body, headers: _}} when status_code in 200..399 -> - body = Poison.decode!(body) + body = @json_library.decode!(body) conn |> put_private(:twitter_token, token) |> put_private(:twitter_user, body) {:ok, %{status_code: _, body: body, headers: _}} -> - body = Poison.decode!(body) + body = @json_library.decode!(body) error = List.first(body["errors"]) set_errors!(conn, [error("token", error["message"])]) end diff --git a/lib/ueberauth/strategy/twitter/oauth.ex b/lib/ueberauth/strategy/twitter/oauth.ex index b2d3a79..5aa8629 100644 --- a/lib/ueberauth/strategy/twitter/oauth.ex +++ b/lib/ueberauth/strategy/twitter/oauth.ex @@ -19,7 +19,7 @@ defmodule Ueberauth.Strategy.Twitter.OAuth do def access_token({token, token_secret}, verifier, opts \\ []) do opts - |> client + |> client() |> to_url(:access_token) |> Internal.get([{"oauth_verifier", verifier}], consumer(client()), token, token_secret) |> decode_response @@ -34,7 +34,7 @@ defmodule Ueberauth.Strategy.Twitter.OAuth do def authorize_url!({token, _token_secret}, opts \\ []) do opts - |> client + |> client() |> to_url(:authorize_url, %{"oauth_token" => token}) end From 9eb04150d58a243373d8d2e7df5d5371194d2c66 Mon Sep 17 00:00:00 2001 From: snewcomer Date: Sun, 23 Dec 2018 13:31:54 -0800 Subject: [PATCH 2/8] Use method to return json_library instead of a module attribute --- lib/ueberauth/strategy/twitter.ex | 32 ++++++------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/lib/ueberauth/strategy/twitter.ex b/lib/ueberauth/strategy/twitter.ex index 46279fa..0d49198 100644 --- a/lib/ueberauth/strategy/twitter.ex +++ b/lib/ueberauth/strategy/twitter.ex @@ -10,30 +10,6 @@ defmodule Ueberauth.Strategy.Twitter do alias Ueberauth.Auth.Extra alias Ueberauth.Strategy.Twitter - @json_library Application.get_env(:ueberauth, :json_library, Ueberauth.Config.json_library()) - unless Code.ensure_loaded?(@json_library) do - IO.puts(""" - The json_library '#{inspect(@json_library)}' does not appear - to be available. A json library is required - for Ueberauth to operate. Is it configured as a - dependency in mix.exs? - In config.exs your expicit or implicit configuration is: - config ueberauth, - json_library: #{inspect(@json_library)} - In mix.exs you will need something like: - def deps() do - [ - ... - {:#{String.downcase(inspect(@json_library))}, :version} - ] - end - """) - - raise ArgumentError, - "Json library #{String.downcase(inspect(@json_library))} does " <> - "not appear to be a dependency" - end - @doc """ Handles initial request for Twitter authentication. """ @@ -129,13 +105,13 @@ defmodule Ueberauth.Strategy.Twitter do {:ok, %{status_code: 401, body: _, headers: _}} -> set_errors!(conn, [error("token", "unauthorized")]) {:ok, %{status_code: status_code, body: body, headers: _}} when status_code in 200..399 -> - body = @json_library.decode!(body) + body = json_library().decode!(body) conn |> put_private(:twitter_token, token) |> put_private(:twitter_user, body) {:ok, %{status_code: _, body: body, headers: _}} -> - body = @json_library.decode!(body) + body = json_library().decode!(body) error = List.first(body["errors"]) set_errors!(conn, [error("token", error["message"])]) end @@ -148,4 +124,8 @@ defmodule Ueberauth.Strategy.Twitter do |> options |> Keyword.get(key, default) end + + defp json_library do + Application.get_env(:ueberauth, :json_library) + end end From 9af257ce20d0887ae035afcb2b64c0a7c5cb6ccf Mon Sep 17 00:00:00 2001 From: snewcomer Date: Sun, 23 Dec 2018 13:57:52 -0800 Subject: [PATCH 3/8] Use Ueberauth config method --- lib/ueberauth/strategy/twitter.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ueberauth/strategy/twitter.ex b/lib/ueberauth/strategy/twitter.ex index 0d49198..4e1663a 100644 --- a/lib/ueberauth/strategy/twitter.ex +++ b/lib/ueberauth/strategy/twitter.ex @@ -126,6 +126,6 @@ defmodule Ueberauth.Strategy.Twitter do end defp json_library do - Application.get_env(:ueberauth, :json_library) + Ueberauth.Config.json_library() || Jason end end From 78711b26d6509ca72ce80918e588008cc15b8b89 Mon Sep 17 00:00:00 2001 From: Yordis Prieto Date: Sun, 23 Dec 2018 14:12:33 -0800 Subject: [PATCH 4/8] Update lib/ueberauth/strategy/twitter.ex Co-Authored-By: snewcomer --- lib/ueberauth/strategy/twitter.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ueberauth/strategy/twitter.ex b/lib/ueberauth/strategy/twitter.ex index 4e1663a..9a30c32 100644 --- a/lib/ueberauth/strategy/twitter.ex +++ b/lib/ueberauth/strategy/twitter.ex @@ -126,6 +126,6 @@ defmodule Ueberauth.Strategy.Twitter do end defp json_library do - Ueberauth.Config.json_library() || Jason + Ueberauth.Config.json_library() end end From 492e725d580b55bbae79cb048fa2057903711748 Mon Sep 17 00:00:00 2001 From: Yordis Prieto Date: Sun, 23 Dec 2018 14:13:00 -0800 Subject: [PATCH 5/8] Update lib/ueberauth/strategy/twitter.ex Co-Authored-By: snewcomer --- lib/ueberauth/strategy/twitter.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ueberauth/strategy/twitter.ex b/lib/ueberauth/strategy/twitter.ex index 9a30c32..024bb44 100644 --- a/lib/ueberauth/strategy/twitter.ex +++ b/lib/ueberauth/strategy/twitter.ex @@ -105,7 +105,7 @@ defmodule Ueberauth.Strategy.Twitter do {:ok, %{status_code: 401, body: _, headers: _}} -> set_errors!(conn, [error("token", "unauthorized")]) {:ok, %{status_code: status_code, body: body, headers: _}} when status_code in 200..399 -> - body = json_library().decode!(body) + body = Ueberauth.Config.json_library().decode!(body) conn |> put_private(:twitter_token, token) From 237bfa718e3747374c7501ee766002f3c6ae48b6 Mon Sep 17 00:00:00 2001 From: Yordis Prieto Date: Sun, 23 Dec 2018 14:13:11 -0800 Subject: [PATCH 6/8] Update lib/ueberauth/strategy/twitter.ex Co-Authored-By: snewcomer --- lib/ueberauth/strategy/twitter.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ueberauth/strategy/twitter.ex b/lib/ueberauth/strategy/twitter.ex index 024bb44..8909bb7 100644 --- a/lib/ueberauth/strategy/twitter.ex +++ b/lib/ueberauth/strategy/twitter.ex @@ -111,7 +111,7 @@ defmodule Ueberauth.Strategy.Twitter do |> put_private(:twitter_token, token) |> put_private(:twitter_user, body) {:ok, %{status_code: _, body: body, headers: _}} -> - body = json_library().decode!(body) + body = Ueberauth.Config.json_library().decode!(body) error = List.first(body["errors"]) set_errors!(conn, [error("token", error["message"])]) end From d63a1e43789ba3674e0e70da37074f89ec21433b Mon Sep 17 00:00:00 2001 From: snewcomer Date: Sun, 23 Dec 2018 14:13:43 -0800 Subject: [PATCH 7/8] remove unused method --- lib/ueberauth/strategy/twitter.ex | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/ueberauth/strategy/twitter.ex b/lib/ueberauth/strategy/twitter.ex index 8909bb7..0da6d49 100644 --- a/lib/ueberauth/strategy/twitter.ex +++ b/lib/ueberauth/strategy/twitter.ex @@ -124,8 +124,4 @@ defmodule Ueberauth.Strategy.Twitter do |> options |> Keyword.get(key, default) end - - defp json_library do - Ueberauth.Config.json_library() - end end From 0811d760187cdcc247379d94972714d71c6182e6 Mon Sep 17 00:00:00 2001 From: snewcomer Date: Mon, 24 Dec 2018 07:21:35 -0800 Subject: [PATCH 8/8] Move ueberauth.config to ueberauth --- lib/ueberauth/strategy/twitter.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ueberauth/strategy/twitter.ex b/lib/ueberauth/strategy/twitter.ex index 0da6d49..de6af23 100644 --- a/lib/ueberauth/strategy/twitter.ex +++ b/lib/ueberauth/strategy/twitter.ex @@ -105,13 +105,13 @@ defmodule Ueberauth.Strategy.Twitter do {:ok, %{status_code: 401, body: _, headers: _}} -> set_errors!(conn, [error("token", "unauthorized")]) {:ok, %{status_code: status_code, body: body, headers: _}} when status_code in 200..399 -> - body = Ueberauth.Config.json_library().decode!(body) + body = Ueberauth.json_library().decode!(body) conn |> put_private(:twitter_token, token) |> put_private(:twitter_user, body) {:ok, %{status_code: _, body: body, headers: _}} -> - body = Ueberauth.Config.json_library().decode!(body) + body = Ueberauth.json_library().decode!(body) error = List.first(body["errors"]) set_errors!(conn, [error("token", error["message"])]) end