Skip to content
Snippets Groups Projects
Commit 813d2eaa authored by eal's avatar eal
Browse files

Add mastodon API endpoint for follow

parent 52935167
No related branches found
No related tags found
No related merge requests found
......@@ -269,11 +269,13 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end
end
def follow(%{assigns: %{user: follower}} = conn, %{"id" => id}) do
with %User{} = followed <- Repo.get(User, id),
{:ok, follower} <- User.follow(follower, followed),
{:ok, activity} <- ActivityPub.follow(follower, followed) do
def follow(%{assigns: %{user: follower}} = conn, params) do
with {:ok, %User{} = followed} <- get_user(params),
{:ok, follower} <- User.follow(follower, followed),
{:ok, activity} <- ActivityPub.follow(follower, followed) do
render conn, AccountView, "relationship.json", %{user: follower, target: followed}
else
err -> err
end
end
......@@ -338,4 +340,25 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
Logger.debug("Unimplemented, returning an empty array")
json(conn, [])
end
defp get_user(params) do
case params do
%{"uri" => uri} ->
case target = Repo.get_by(User, nickname: uri) do
nil ->
{:error, "No user with such nickname"}
_ ->
{:ok, target}
end
%{"id" => id} ->
case target = Repo.get(User, id) do
nil ->
{:error, "No user with such id"}
_ ->
{:ok, target}
end
_ ->
{:error, "You need to specify uri or id"}
end
end
end
......@@ -62,6 +62,8 @@ defmodule Pleroma.Web.Router do
post "/accounts/:id/mute", MastodonAPIController, :relationship_noop
post "/accounts/:id/unmute", MastodonAPIController, :relationship_noop
post "/follows", MastodonAPIController, :follow
get "/blocks", MastodonAPIController, :empty_array
get "/domain_blocks", MastodonAPIController, :empty_array
get "/follow_requests", MastodonAPIController, :empty_array
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment