Add API endpoints and user column for subscription
[akkoma] / lib / pleroma / web / twitter_api / twitter_api_controller.ex
index 62cce18dc2bd78a7da18aef9816920ef6c20483c..af4c0a60e376cdbd2b2e35e3f1db4fc2f14b7c42 100644 (file)
@@ -269,8 +269,32 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
     end
   end
 
+  def subscribe(%{assigns: %{user: user}} = conn, params) do
+    case TwitterAPI.subscribe(user, params) do
+      {:ok, user, subscribed} ->
+        conn
+        |> put_view(UserView)
+        |> render("show.json", %{user: subscribed, for: user})
+
+      {:error, msg} ->
+        forbidden_json_reply(conn, msg)
+    end
+  end        
+
+  def unsubscribe(%{assigns: %{user: user}} = conn, params) do
+    case TwitterAPI.unsubscribe(user, params) do
+      {:ok, user, unsubscribed} ->
+        conn
+        |> put_view(UserView)
+        |> render("show.json", %{user: unsubscribed, for: user})
+      {:error, msg} ->
+        forbidden_json_reply(conn, msg)
+    end
+  end
+
   def fetch_status(%{assigns: %{user: user}} = conn, %{"id" => id}) do
-    with %Activity{} = activity <- Repo.get(Activity, id),
+    with %Activity{} = activity <- Activity.get_by_id(id),
          true <- Visibility.visible_for_user?(activity, user) do
       conn
       |> put_view(ActivityView)
@@ -342,7 +366,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
   end
 
   def get_by_id_or_ap_id(id) do
-    activity = Repo.get(Activity, id) || Activity.get_create_by_object_ap_id(id)
+    activity = Activity.get_by_id(id) || Activity.get_create_by_object_ap_id(id)
 
     if activity.data["type"] == "Create" do
       activity
@@ -434,7 +458,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
   end
 
   def confirm_email(conn, %{"user_id" => uid, "token" => token}) do
-    with %User{} = user <- Repo.get(User, uid),
+    with %User{} = user <- User.get_by_id(uid),
          true <- user.local,
          true <- user.info.confirmation_pending,
          true <- user.info.confirmation_token == token,
@@ -587,7 +611,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
 
   def approve_friend_request(conn, %{"user_id" => uid} = _params) do
     with followed <- conn.assigns[:user],
-         %User{} = follower <- Repo.get(User, uid),
+         %User{} = follower <- User.get_by_id(uid),
          {:ok, follower} <- CommonAPI.accept_follow_request(follower, followed) do
       conn
       |> put_view(UserView)
@@ -599,7 +623,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
 
   def deny_friend_request(conn, %{"user_id" => uid} = _params) do
     with followed <- conn.assigns[:user],
-         %User{} = follower <- Repo.get(User, uid),
+         %User{} = follower <- User.get_by_id(uid),
          {:ok, follower} <- CommonAPI.reject_follow_request(follower, followed) do
       conn
       |> put_view(UserView)