diff options
author | dtluna <dtluna@openmailbox.org> | 2017-04-12 17:34:36 +0300 |
---|---|---|
committer | dtluna <dtluna@openmailbox.org> | 2017-04-12 17:34:36 +0300 |
commit | 65ef18a7157f8cfcc494ad7a72ce083e79e38d26 (patch) | |
tree | 534f449991e337deec86dd40f770a63338f26f9b /lib/pleroma/web/twitter_api | |
parent | b5e94bf9301713fd9eb3b80dbcf64ae6782092bc (diff) | |
download | pleroma-65ef18a7157f8cfcc494ad7a72ce083e79e38d26.tar.gz |
Add error messages for repeated follows and unfollows
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 |