X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Ftwitter_api%2Ftwitter_api.ex;h=1c3396d27adf46a8fb4be0b4aeecf624b691ca01;hb=e8882ab3daa754aea8b2b1a96b7532c14530bbdc;hp=ad73e82ce100d9c3c4fa9cd789cbf4fba766589d;hpb=ef4190b3abbc581e9405f2a32fe7579345a3d155;p=akkoma
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex
index ad73e82ce..1c3396d27 100644
--- a/lib/pleroma/web/twitter_api/twitter_api.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api.ex
@@ -11,11 +11,11 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
"https://www.w3.org/ns/activitystreams#Public"
]
- to = default_to ++ Enum.map(mentions, fn ({_, %{ap_id: ap_id}}) -> ap_id end)
+ default_to ++ Enum.map(mentions, fn ({_, %{ap_id: ap_id}}) -> ap_id end)
end
def format_input(text, mentions) do
- content = HtmlSanitizeEx.strip_tags(text)
+ HtmlSanitizeEx.strip_tags(text)
|> String.replace("\n", "
")
|> add_user_links(mentions)
end
@@ -26,21 +26,26 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
end)
end
+ def get_replied_to_activity(id) when not is_nil(id) do
+ Repo.get(Activity, id)
+ end
+
+ def get_replied_to_activity(_), do: nil
+
def create_status(user = %User{}, data = %{"status" => status}) do
attachments = attachments_from_ids(data["media_ids"])
context = ActivityPub.generate_context_id
mentions = parse_mentions(status)
content_html = format_input(status, mentions)
to = to_for_user_and_mentions(user, mentions)
-
date = make_date()
+ inReplyTo = get_replied_to_activity(data["in_reply_to_status_id"])
+
# Wire up reply info.
[to, context, object, additional] =
- with inReplyToId when not is_nil(inReplyToId) <- data["in_reply_to_status_id"],
- inReplyTo <- Repo.get(Activity, inReplyToId),
- context <- inReplyTo.data["context"]
- do
+ if inReplyTo do
+ context = inReplyTo.data["context"]
to = to ++ [inReplyTo.data["actor"]]
object = %{
@@ -52,7 +57,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
"attachment" => attachments,
"actor" => user.ap_id,
"inReplyTo" => inReplyTo.data["object"]["id"],
- "inReplyToStatusId" => inReplyToId,
+ "inReplyToStatusId" => inReplyTo.id,
"statusnetConversationId" => inReplyTo.data["statusnetConversationId"]
}
additional = %{
@@ -60,7 +65,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
}
[to, context, object, additional]
- else _e ->
+ else
object = %{
"type" => "Note",
"to" => to,
@@ -119,9 +124,9 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
end
end
- def follow(%User{} = follower, followed_id) do
- with %User{} = followed <- Repo.get(User, followed_id),
- { :ok, follower } <- User.follow(follower, followed),
+ def follow(%User{} = follower, params) do
+ with { :ok, %User{} = followed } <- get_user(params),
+ { :ok, follower } <- User.follow(follower, followed),
{ :ok, activity } <- ActivityPub.insert(%{
"type" => "Follow",
"actor" => follower.ap_id,
@@ -135,11 +140,11 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
end
end
- def unfollow(%User{} = follower, followed_id) do
- with %User{} = followed <- Repo.get(User, followed_id),
- { :ok, follower } <- User.unfollow(follower, followed)
+ def unfollow(%User{} = follower, params) do
+ with { :ok, %User{} = unfollowed } <- get_user(params),
+ { :ok, follower } <- User.unfollow(follower, unfollowed)
do
- { :ok, follower, followed }
+ { :ok, follower, unfollowed}
else
err -> err
end
@@ -230,24 +235,6 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
Enum.reduce(mentions, text, fn ({match, %User{ap_id: ap_id}}, text) -> String.replace(text, match, "#{match}") end)
end
- defp add_conversation_id(activity) do
- if is_integer(activity.data["statusnetConversationId"]) do
- {:ok, activity}
- else
- data = activity.data
- |> put_in(["object", "statusnetConversationId"], activity.id)
- |> put_in(["statusnetConversationId"], activity.id)
-
- object = Object.get_by_ap_id(activity.data["object"]["id"])
-
- changeset = Ecto.Changeset.change(object, data: data["object"])
- Repo.update(changeset)
-
- changeset = Ecto.Changeset.change(activity, data: data)
- Repo.update(changeset)
- end
- end
-
def register_user(params) do
params = %{
nickname: params["nickname"],
@@ -266,11 +253,11 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
{:error, changeset} ->
errors = Ecto.Changeset.traverse_errors(changeset, fn {msg, _opts} -> msg end)
|> Poison.encode!
- {:error, %{error: errors}}
+ {:error, %{error: errors}}
end
end
- def get_user(user, params) do
+ def get_user(user \\ nil, params) do
case params do
%{ "user_id" => user_id } ->
case target = Repo.get(User, user_id) do