diff options
Diffstat (limited to 'lib/pleroma/web/twitter_api')
-rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api.ex | 17 | ||||
-rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api_controller.ex | 22 |
2 files changed, 21 insertions, 18 deletions
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index 0217b28d6..064120031 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -78,6 +78,12 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do |> activities_to_statuses(%{for: user}) end + def fetch_user_statuses(user, opts \\ %{}) do + target = get_user(user, opts) + ActivityPub.fetch_activities([], Map.merge(opts, %{"actor_id" => target.ap_id})) + |> activities_to_statuses(%{for: user}) + end + def fetch_conversation(user, id) do query = from activity in Activity, where: fragment("? @> ?", activity.data, ^%{ statusnetConversationId: id}), @@ -188,4 +194,15 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do defp make_date do DateTime.utc_now() |> DateTime.to_iso8601 end + + defp get_user(user, params) do + case params do + %{ "user_id" => user_id } -> + Repo.get(User, user_id) + %{ "screen_name" => nickname } -> + Repo.get_by!(User, nickname: nickname) + _ -> + user + end + 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 11e7b3bdf..1d9d7f540 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -43,24 +43,10 @@ defmodule Pleroma.Web.TwitterAPI.Controller do |> json_reply(200, json) end - def user_timeline(conn, %{ "user_id" => user_id } = params) do - user = Repo.get(User, user_id) - conn = Map.merge(conn, %{assigns: %{user: user}}) - params = Map.delete(params, "user_id") - - friends_timeline(conn, params) - end - - def user_timeline(conn, %{ "screen_name" => nickname} = params) do - user = Repo.get_by!(User, nickname: nickname) - conn = Map.merge(conn, %{assigns: %{user: user}}) - params = Map.delete(params, "screen_name") - - friends_timeline(conn, params) - end - - def user_timeline(conn, params) do - friends_timeline(conn, params) + def user_timeline(%{assigns: %{user: user}} = conn, params) do + statuses = TwitterAPI.fetch_user_statuses(user, params) + conn + |> json_reply(200, statuses |> Poison.encode!) end def follow(%{assigns: %{user: user}} = conn, %{ "user_id" => followed_id }) do |