From c45133377ae757f7dfa9eec0a3bed4b3feb60b93 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 21 Jun 2018 19:28:39 +0200 Subject: [PATCH 1/4] lib/pleroma/web/activity_pub/mrf/simple_policy.ex: mix format Hnng! --- lib/pleroma/web/activity_pub/mrf/simple_policy.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index 0a047013a..7fecb8a4f 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do @accept Keyword.get(@mrf_policy, :accept) defp check_accept(actor_info, object) do - if length(@accept) > 0 and not actor_info.host in @accept do + if length(@accept) > 0 and not (actor_info.host in @accept) do {:reject, nil} else {:ok, object} From 359093d73b12ce5a0ade81f167d54ffd3e38d7d4 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Mon, 4 Jun 2018 17:44:08 +0200 Subject: [PATCH 2/4] Fake 2.4.0 API --- lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 1 + lib/pleroma/web/mastodon_api/views/account_view.ex | 2 ++ lib/pleroma/web/router.ex | 2 ++ test/web/mastodon_api/account_view_test.exs | 2 ++ 4 files changed, 7 insertions(+) diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 8a8d1e050..a42f341c2 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -812,6 +812,7 @@ def index(%{assigns: %{user: user}} = conn, _params) do boost_modal: false, delete_modal: true, auto_play_gif: false, + display_sensitive_media: false, reduce_motion: false }, compose: %{ diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 9db683f44..f33d615cf 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -30,6 +30,8 @@ def render("account.json", %{user: user}) do avatar_static: image, header: header, header_static: header, + emojis: [], + fields: [], source: %{ note: "", privacy: "public", diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 13bd393ab..929a70f91 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -170,6 +170,8 @@ def user_fetcher(username) do get("/accounts/:id/following", MastodonAPIController, :following) get("/accounts/:id", MastodonAPIController, :user) + get("/trends", MastodonAPIController, :empty_array) + get("/search", MastodonAPIController, :search) end diff --git a/test/web/mastodon_api/account_view_test.exs b/test/web/mastodon_api/account_view_test.exs index f7b8d7438..b93418b3f 100644 --- a/test/web/mastodon_api/account_view_test.exs +++ b/test/web/mastodon_api/account_view_test.exs @@ -28,6 +28,8 @@ test "Represent a user account" do avatar_static: "http://localhost:4001/images/avi.png", header: "http://localhost:4001/images/banner.png", header_static: "http://localhost:4001/images/banner.png", + emojis: [], + fields: [], source: %{ note: "", privacy: "public", From a05c0ff61dd3c9fe58f367d41fc9adc7a73b01a7 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 13 Jun 2018 18:21:59 +0200 Subject: [PATCH 3/4] [Pleroma.Web.MastodonApi.MastodonApiController] Add /api/v2/search --- .../mastodon_api/mastodon_api_controller.ex | 52 +++++++++++++++++++ lib/pleroma/web/router.ex | 5 ++ 2 files changed, 57 insertions(+) diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index a42f341c2..71f34a488 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -621,6 +621,58 @@ def unblock_domain(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) d json(conn, %{}) end + def search2(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do + accounts = User.search(query, params["resolve"] == "true") + + fetched = + if Regex.match?(~r/https?:/, query) do + with {:ok, activities} <- OStatus.fetch_activity_from_url(query) do + activities + |> Enum.filter(fn + %{data: %{"type" => "Create"}} -> true + _ -> false + end) + else + _e -> [] + end + end || [] + + q = + from( + a in Activity, + where: fragment("?->>'type' = 'Create'", a.data), + where: "https://www.w3.org/ns/activitystreams#Public" in a.recipients, + where: + fragment( + "to_tsvector('english', ?->'object'->>'content') @@ plainto_tsquery('english', ?)", + a.data, + ^query + ), + limit: 20, + order_by: [desc: :id] + ) + + statuses = Repo.all(q) ++ fetched + + tags_path = Web.base_url() <> "/tag/" + + tags = + String.split(query) + |> Enum.uniq() + |> Enum.filter(fn tag -> String.starts_with?(tag, "#") end) + |> Enum.map(fn tag -> String.slice(tag, 1..-1) end) + |> Enum.map(fn tag -> %{name: tag, url: tags_path <> tag} end) + + res = %{ + "accounts" => AccountView.render("accounts.json", users: accounts, for: user, as: :user), + "statuses" => + StatusView.render("index.json", activities: statuses, for: user, as: :activity), + "hashtags" => tags + } + + json(conn, res) + end + def search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do accounts = User.search(query, params["resolve"] == "true") diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 929a70f91..ebe68218b 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -175,6 +175,11 @@ def user_fetcher(username) do get("/search", MastodonAPIController, :search) end + scope "/api/v2", Pleroma.Web.MastodonAPI do + pipe_through(:api) + get("/search", MastodonAPIController, :search2) + end + scope "/api", Pleroma.Web do pipe_through(:config) From 5a4a45b875276414be11d9348540b6028062f9c3 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 23 Jun 2018 11:54:04 +0200 Subject: [PATCH 4/4] [Pleroma.Web.MastodonApi.MastodonApiController] Add initial_state.meta.max_toot_chars --- lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 71f34a488..dab255ee2 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -865,7 +865,8 @@ def index(%{assigns: %{user: user}} = conn, _params) do delete_modal: true, auto_play_gif: false, display_sensitive_media: false, - reduce_motion: false + reduce_motion: false, + max_toot_chars: Keyword.get(@instance, :limit) }, compose: %{ me: "#{user.id}",