aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/twitter_api
diff options
context:
space:
mode:
authordtluna <dtluna@openmailbox.org>2017-04-28 16:06:57 +0300
committerdtluna <dtluna@openmailbox.org>2017-04-28 16:06:57 +0300
commita9b2ad17596d1b6deca646239a95e94dc644ebf3 (patch)
tree9e086441831f33e191cd62b05b61ece0677491cc /lib/pleroma/web/twitter_api
parent28b203d08fe2e0d7afe3f3ec03a16cef62288b23 (diff)
parentfb5cebc1b5dcfd6af7fa1a81bc5b26275714fa26 (diff)
downloadpleroma-a9b2ad17596d1b6deca646239a95e94dc644ebf3.tar.gz
Merge branch 'develop' of ssh.gitgud.io:lambadalambda/pleroma into feature/unfollow-activity
Diffstat (limited to 'lib/pleroma/web/twitter_api')
-rw-r--r--lib/pleroma/web/twitter_api/representers/user_representer.ex6
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api.ex4
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api_controller.ex45
3 files changed, 36 insertions, 19 deletions
diff --git a/lib/pleroma/web/twitter_api/representers/user_representer.ex b/lib/pleroma/web/twitter_api/representers/user_representer.ex
index f358baf3c..ab7d6d353 100644
--- a/lib/pleroma/web/twitter_api/representers/user_representer.ex
+++ b/lib/pleroma/web/twitter_api/representers/user_representer.ex
@@ -4,11 +4,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.UserRepresenter do
alias Pleroma.User
def to_map(user, opts) do
- image = case user.avatar do
- %{"url" => [%{"href" => href} | _]} -> href
- _ -> "https://placehold.it/48x48"
- end
-
+ image = User.avatar_url(user)
following = if opts[:for] do
User.following?(opts[:for], user)
else
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex
index 0f39ed7f3..8e2cd98ca 100644
--- a/lib/pleroma/web/twitter_api/twitter_api.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api.ex
@@ -66,7 +66,9 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
end
with {:ok, activity} <- ActivityPub.insert(activity) do
- add_conversation_id(activity)
+ {:ok, activity} = add_conversation_id(activity)
+ Pleroma.Web.Websub.publish(Pleroma.Web.OStatus.feed_path(user), user, activity)
+ {:ok, activity}
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 4d21ce9d3..b5b829ca0 100644
--- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex
@@ -12,11 +12,23 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
|> json_reply(200, response)
end
- def status_update(%{assigns: %{user: user}} = conn, status_data) do
- media_ids = extract_media_ids(status_data)
- {:ok, activity} = TwitterAPI.create_status(user, Map.put(status_data, "media_ids", media_ids ))
- conn
- |> json_reply(200, ActivityRepresenter.to_json(activity, %{user: user}))
+ def status_update(%{assigns: %{user: user}} = conn, %{"status" => status_text} = status_data) do
+ if status_text |> String.trim |> String.length != 0 do
+ media_ids = extract_media_ids(status_data)
+ {:ok, activity} = TwitterAPI.create_status(user, Map.put(status_data, "media_ids", media_ids ))
+ conn
+ |> json_reply(200, ActivityRepresenter.to_json(activity, %{user: user}))
+ else
+ empty_status_reply(conn)
+ end
+ end
+
+ def status_update(conn, _status_data) do
+ empty_status_reply(conn)
+ end
+
+ defp empty_status_reply(conn) do
+ bad_request_reply(conn, "Client must provide a 'status' parameter with a value.")
end
defp extract_media_ids(status_data) do
@@ -151,11 +163,16 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
def retweet(%{assigns: %{user: user}} = conn, %{"id" => id}) do
activity = Repo.get(Activity, id)
- {:ok, status} = TwitterAPI.retweet(user, activity)
- response = Poison.encode!(status)
+ if activity.data["actor"] == user.ap_id do
+ bad_request_reply(conn, "You cannot repeat your own notice.")
+ else
+ {:ok, status} = TwitterAPI.retweet(user, activity)
+ response = Poison.encode!(status)
- conn
- |> json_reply(200, response)
+ conn
+
+ |> json_reply(200, response)
+ end
end
def register(conn, params) do
@@ -182,7 +199,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
defp bad_request_reply(conn, error_message) do
- json = Poison.encode!(%{"error" => error_message})
+ json = error_json(conn, error_message)
json_reply(conn, 400, json)
end
@@ -193,9 +210,11 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
defp forbidden_json_reply(conn, error_message) do
- json = %{"error" => error_message, "request" => conn.request_path}
- |> Poison.encode!
-
+ json = error_json(conn, error_message)
json_reply(conn, 403, json)
end
+
+ defp error_json(conn, error_message) do
+ %{"error" => error_message, "request" => conn.request_path} |> Poison.encode!
+ end
end