aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/twitter_api/controllers
diff options
context:
space:
mode:
authoreal <eal@waifu.club>2018-02-02 00:00:48 +0200
committereal <eal@waifu.club>2018-02-02 00:14:05 +0200
commit29be70c0082ea09f03896c7e52e2b8a9cdbea641 (patch)
tree88d5701dd9f4645ef2167d5733579313eaf21e25 /lib/pleroma/web/twitter_api/controllers
parentab83e0de6d389428cec11fe94280d675a38f00d0 (diff)
downloadpleroma-29be70c0082ea09f03896c7e52e2b8a9cdbea641.tar.gz
Add remote following of local profiles.
Diffstat (limited to 'lib/pleroma/web/twitter_api/controllers')
-rw-r--r--lib/pleroma/web/twitter_api/controllers/util_controller.ex21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
index a1d56e3ab..0b7c64015 100644
--- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex
+++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
@@ -3,6 +3,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
require Logger
alias Pleroma.Web
alias Pleroma.Web.OStatus
+ alias Pleroma.Web.WebFinger
alias Comeonin.Pbkdf2
alias Pleroma.Formatter
alias Pleroma.Web.ActivityPub.ActivityPub
@@ -32,6 +33,26 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
json(conn, "ok")
end
+ def remote_subscribe(conn, %{"nickname" => nick, "profile" => _}) do
+ with %User{} = user <- User.get_cached_by_nickname(nick),
+ avatar = User.avatar_url(user) do
+ conn
+ |> render("subscribe.html", %{nickname: nick, avatar: avatar, error: false})
+ else
+ _e -> render(conn, "subscribe.html", %{nickname: nick, avatar: nil, error: "Could not find user"})
+ end
+ end
+ def remote_subscribe(conn, %{"user" => %{"nickname" => nick, "profile" => profile}}) do
+ with {:ok, %{"subscribe_address" => template}} <- WebFinger.finger(profile),
+ %User{ap_id: ap_id} <- User.get_cached_by_nickname(nick) do
+ conn
+ |> Phoenix.Controller.redirect(external: String.replace(template, "{uri}", ap_id))
+ else
+ _e ->
+ render(conn, "subscribe.html", %{nickname: nick, avatar: nil, error: "Something went wrong."})
+ end
+ end
+
def remote_follow(%{assigns: %{user: user}} = conn, %{"acct" => acct}) do
{err, followee} = OStatus.find_or_make_user(acct)
avatar = User.avatar_url(followee)