diff options
Diffstat (limited to 'lib/pleroma/web/twitter_api')
-rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api.ex | 6 | ||||
-rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api_controller.ex | 30 |
2 files changed, 25 insertions, 11 deletions
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index 0a942e880..66f78f340 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -103,7 +103,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do def follow(%User{} = follower, followed_id) do with %User{} = followed <- Repo.get(User, followed_id), - { :ok, follower } <- User.follow(follower, followed), + { :ok, follower } <- User.follow(follower, followed), { :ok, activity } <- ActivityPub.insert(%{ "type" => "Follow", "actor" => follower.ap_id, @@ -112,6 +112,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do }) do { :ok, follower, followed, activity } + else + err -> err end end @@ -120,6 +122,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do { :ok, follower } <- User.unfollow(follower, followed) do { :ok, follower, followed } + else + err -> err end end diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index f2c893e96..f6574b8de 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -44,21 +44,24 @@ defmodule Pleroma.Web.TwitterAPI.Controller do end def follow(%{assigns: %{user: user}} = conn, %{ "user_id" => followed_id }) do - { :ok, _user, follower, _activity } = TwitterAPI.follow(user, followed_id) - - response = follower |> UserRepresenter.to_json(%{for: user}) + case TwitterAPI.follow(user, followed_id) do + { :ok, _user, followed, _activity } -> + response = followed |> UserRepresenter.to_json(%{for: user}) + conn |> json_reply(200, response) + { :error, msg } -> forbidden_json_reply(conn, msg) + end - conn - |> json_reply(200, response) end def unfollow(%{assigns: %{user: user}} = conn, %{ "user_id" => followed_id }) do - { :ok, user, follower } = TwitterAPI.unfollow(user, followed_id) - - response = follower |> UserRepresenter.to_json(%{for: user}) + case TwitterAPI.unfollow(user, followed_id) do + { :ok, user, followed } -> + response = followed |> UserRepresenter.to_json(%{for: user}) - conn - |> json_reply(200, response) + conn + |> json_reply(200, response) + { :error, msg } -> forbidden_json_reply(conn, msg) + end end def fetch_status(%{assigns: %{user: user}} = conn, %{ "id" => id }) do @@ -88,4 +91,11 @@ defmodule Pleroma.Web.TwitterAPI.Controller do |> put_resp_content_type("application/json") |> send_resp(status, json) end + + defp forbidden_json_reply(conn, error_message) do + json = %{"error" => error_message, "request" => conn.request_path} + |> Poison.encode! + + json_reply(conn, 403, json) + end end |