diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/formatter.ex | 2 | ||||
-rw-r--r-- | lib/pleroma/web/federator/federator.ex | 6 | ||||
-rw-r--r-- | lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 2 | ||||
-rw-r--r-- | lib/pleroma/web/router.ex | 5 | ||||
-rw-r--r-- | lib/pleroma/web/twitter_api/controllers/util_controller.ex | 23 |
5 files changed, 32 insertions, 6 deletions
diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index c98db2d94..a482c74e4 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -10,7 +10,7 @@ defmodule Pleroma.Formatter do def parse_tags(text, data \\ %{}) do Regex.scan(@tag_regex, text) |> Enum.map(fn (["#" <> tag = full_tag]) -> {full_tag, String.downcase(tag)} end) - |> (fn map -> if data["sensitive"], do: [{"#nsfw", "nsfw"}] ++ map, else: map end).() + |> (fn map -> if data["sensitive"] in [true, "True", "true"], do: [{"#nsfw", "nsfw"}] ++ map, else: map end).() end def parse_mentions(text) do diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index b23ed5fcc..c9f9dc7a1 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -41,12 +41,12 @@ defmodule Pleroma.Web.Federator do def handle(:publish, activity) do Logger.debug(fn -> "Running publish for #{activity.data["id"]}" end) with actor when not is_nil(actor) <- User.get_cached_by_ap_id(activity.data["actor"]) do - Logger.debug(fn -> "Sending #{activity.data["id"]} out via websub" end) - Websub.publish(Pleroma.Web.OStatus.feed_path(actor), actor, activity) - {:ok, actor} = WebFinger.ensure_keys_present(actor) Logger.debug(fn -> "Sending #{activity.data["id"]} out via salmon" end) Pleroma.Web.Salmon.publish(actor, activity) + + Logger.debug(fn -> "Sending #{activity.data["id"]} out via websub" end) + Websub.publish(Pleroma.Web.OStatus.feed_path(actor), actor, activity) end end diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index e50f53ba4..a17068be8 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -162,7 +162,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do def public_timeline(%{assigns: %{user: user}} = conn, params) do params = params |> Map.put("type", ["Create", "Announce"]) - |> Map.put("local_only", !!params["local"]) + |> Map.put("local_only", params["local"] in [true, "True", "true"]) |> Map.put("blocking_user", user) activities = ActivityPub.fetch_public_activities(params) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 8d8566490..374b8f251 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -51,6 +51,11 @@ defmodule Pleroma.Web.Router do get "/emoji", UtilController, :emoji end + scope "/api/pleroma", Pleroma.Web.TwitterAPI do + pipe_through :authenticated_api + post "/follow_import", UtilController, :follow_import + end + scope "/oauth", Pleroma.Web.OAuth do get "/authorize", OAuthController, :authorize post "/authorize", OAuthController, :create_authorization diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index de2abd4d1..9079d2f9b 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -1,8 +1,9 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do use Pleroma.Web, :controller + require Logger alias Pleroma.Web alias Pleroma.Formatter - + alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.{Repo, PasswordResetToken, User} def show_password_reset(conn, %{"token" => token}) do @@ -73,4 +74,24 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do def emoji(conn, _params) do json conn, Enum.into(Formatter.get_custom_emoji(), %{}) end + + def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do + follow_import(conn, %{"list" => File.read!(listfile.path)}) + end + def follow_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do + Task.start_link(fn -> + String.split(list) + |> Enum.map(fn nick -> + with %User{} = follower <- User.get_cached_by_ap_id(user.ap_id), + %User{} = followed <- User.get_or_fetch_by_nickname(nick), + {:ok, follower} <- User.follow(follower, followed) do + ActivityPub.follow(follower, followed) + else + _e -> Logger.debug "follow_import: following #{nick} failed" + end + end) + end) + + json conn, "job started" + end end |