X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Ftwitter_api%2Ftwitter_api_controller.ex;h=157e4826b2ef3ee6a4522d3bc3d10e37e702153b;hb=96007753ad099b43fcea33662e22b5528426849d;hp=a8bcae5ba4f40840504098aa66d5a55324761907;hpb=4afbef39f49948ddd3b1cd1bbda58ff7e3ac2785;p=akkoma diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index a8bcae5ba..157e4826b 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -1,7 +1,6 @@ defmodule Pleroma.Web.TwitterAPI.Controller do use Pleroma.Web, :controller alias Pleroma.Web.TwitterAPI.{TwitterAPI, UserView, ActivityView} - alias Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter alias Pleroma.Web.CommonAPI alias Pleroma.{Repo, Activity, User} alias Pleroma.Web.ActivityPub.ActivityPub @@ -19,7 +18,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do {:ok, activity} <- TwitterAPI.create_status(user, Map.put(status_data, "media_ids", media_ids)) do conn - |> json(ActivityRepresenter.to_map(activity, %{user: user})) + |> json(ActivityView.render("activity.json", activity: activity, for: user)) else _ -> empty_status_reply(conn) end @@ -44,27 +43,41 @@ defmodule Pleroma.Web.TwitterAPI.Controller do end def public_and_external_timeline(%{assigns: %{user: user}} = conn, params) do - statuses = TwitterAPI.fetch_public_and_external_statuses(user, params) - {:ok, json} = Jason.encode(statuses) + params = + params + |> Map.put("type", ["Create", "Announce", "Follow"]) + |> Map.put("blocking_user", user) + + activities = ActivityPub.fetch_public_activities(params) conn - |> json_reply(200, json) + |> render(ActivityView, "index.json", %{activities: activities, for: user}) end def public_timeline(%{assigns: %{user: user}} = conn, params) do - statuses = TwitterAPI.fetch_public_statuses(user, params) - {:ok, json} = Jason.encode(statuses) + params = + params + |> Map.put("type", ["Create", "Announce", "Follow"]) + |> Map.put("local_only", true) + |> Map.put("blocking_user", user) + + activities = ActivityPub.fetch_public_activities(params) conn - |> json_reply(200, json) + |> render(ActivityView, "index.json", %{activities: activities, for: user}) end def friends_timeline(%{assigns: %{user: user}} = conn, params) do - statuses = TwitterAPI.fetch_friend_statuses(user, params) - {:ok, json} = Jason.encode(statuses) + params = + params + |> Map.put("type", ["Create", "Announce", "Follow", "Like"]) + |> Map.put("blocking_user", user) + |> Map.put("user", user) + + activities = ActivityPub.fetch_activities([user.ap_id | user.following], params) conn - |> json_reply(200, json) + |> render(ActivityView, "index.json", %{activities: activities, for: user}) end def show_user(conn, params) do @@ -83,11 +96,16 @@ defmodule Pleroma.Web.TwitterAPI.Controller do def user_timeline(%{assigns: %{user: user}} = conn, params) do case TwitterAPI.get_user(user, params) do {:ok, target_user} -> - params = Map.merge(params, %{"actor_id" => target_user.ap_id, "whole_db" => true}) - statuses = TwitterAPI.fetch_user_statuses(user, params) + params = + params + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("actor_id", target_user.ap_id) + |> Map.put("whole_db", true) + + activities = ActivityPub.fetch_public_activities(params) conn - |> json_reply(200, statuses |> Jason.encode!()) + |> render(ActivityView, "index.json", %{activities: activities, for: user}) {:error, msg} -> bad_request_reply(conn, msg) @@ -95,11 +113,10 @@ defmodule Pleroma.Web.TwitterAPI.Controller do end def mentions_timeline(%{assigns: %{user: user}} = conn, params) do - statuses = TwitterAPI.fetch_mentions(user, params) - {:ok, json} = Jason.encode(statuses) + activities = ActivityPub.fetch_activities([user.ap_id], params) conn - |> json_reply(200, json) + |> render(ActivityView, "index.json", %{activities: activities, for: user}) end def follow(%{assigns: %{user: user}} = conn, params) do @@ -134,10 +151,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do def delete_post(%{assigns: %{user: user}} = conn, %{"id" => id}) do with {:ok, delete} <- CommonAPI.delete(id, user) do - json = ActivityRepresenter.to_json(delete, %{user: user, for: user}) - - conn - |> json_reply(200, json) + render(conn, ActivityView, "activity.json", %{activity: delete, for: user}) end end @@ -160,10 +174,16 @@ defmodule Pleroma.Web.TwitterAPI.Controller do def fetch_conversation(%{assigns: %{user: user}} = conn, %{"id" => id}) do id = String.to_integer(id) - response = Jason.encode!(TwitterAPI.fetch_conversation(user, id)) - conn - |> json_reply(200, response) + with context when is_binary(context) <- TwitterAPI.conversation_id_to_context(id), + activities <- + ActivityPub.fetch_activities_for_context(context, %{ + "blocking_user" => user, + "user" => user + }) do + conn + |> render(ActivityView, "index.json", %{activities: activities, for: user}) + end end def upload(conn, %{"media" => media}) do @@ -192,20 +212,20 @@ defmodule Pleroma.Web.TwitterAPI.Controller do end def favorite(%{assigns: %{user: user}} = conn, %{"id" => id}) do - with {:ok, status} <- TwitterAPI.fav(user, id) do - json(conn, status) + with {:ok, activity} <- TwitterAPI.fav(user, id) do + render(conn, ActivityView, "activity.json", %{activity: activity, for: user}) end end def unfavorite(%{assigns: %{user: user}} = conn, %{"id" => id}) do - with {:ok, status} <- TwitterAPI.unfav(user, id) do - json(conn, status) + with {:ok, activity} <- TwitterAPI.unfav(user, id) do + render(conn, ActivityView, "activity.json", %{activity: activity, for: user}) end end def retweet(%{assigns: %{user: user}} = conn, %{"id" => id}) do - with {:ok, status} <- TwitterAPI.repeat(user, id) do - json(conn, status) + with {:ok, activity} <- TwitterAPI.repeat(user, id) do + render(conn, ActivityView, "activity.json", %{activity: activity, for: user}) end end @@ -337,8 +357,10 @@ defmodule Pleroma.Web.TwitterAPI.Controller do end def search(%{assigns: %{user: user}} = conn, %{"q" => _query} = params) do + activities = TwitterAPI.search(user, params) + conn - |> json(TwitterAPI.search(user, params)) + |> render(ActivityView, "index.json", %{activities: activities, for: user}) end defp bad_request_reply(conn, error_message) do