Browse Source

do nothing if configuration is skipped

tags/v0.9.9
Hakaba Hitoyo 6 years ago
parent
commit
d76f0d87be
2 changed files with 28 additions and 23 deletions
  1. +3
    -3
      config/config.exs
  2. +25
    -20
      lib/pleroma/web/mastodon_api/mastodon_api_controller.ex

+ 3
- 3
config/config.exs View File

@@ -95,9 +95,9 @@ config :pleroma, :gopher,
ip: {0, 0, 0, 0},
port: 9999

config :pleroma, :suggestions,
third_party_engine:
"http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-suggestions-api.cgi?{{host}}+{{user}}"
# config :pleroma, :suggestions,
# third_party_engine:
# "http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-suggestions-api.cgi?{{host}}+{{user}}"

# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.


+ 25
- 20
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex View File

@@ -1076,28 +1076,33 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
@suggestions Application.get_env(:pleroma, :suggestions)

def suggestions(%{assigns: %{user: user}} = conn, _) do
host =
Application.get_env(:pleroma, Pleroma.Web.Endpoint)
|> Keyword.get(:url)
|> Keyword.get(:host)

user = user.nickname
api = Keyword.get(@suggestions, :third_party_engine, "")
url = String.replace(api, "{{host}}", host) |> String.replace("{{user}}", user)

with {:ok, %{status_code: 200, body: body}} <-
@httpoison.get(url, [], timeout: 300_000, recv_timeout: 300_000),
{:ok, data} <- Jason.decode(body) do
data2 =
Enum.slice(data, 0, 40)
|> Enum.map(fn x ->
Map.put(x, "id", User.get_or_fetch(x["acct"]).id)
end)
api = Keyword.get(@suggestions, :third_party_engine, false)

if api do
host =
Application.get_env(:pleroma, Pleroma.Web.Endpoint)
|> Keyword.get(:url)
|> Keyword.get(:host)

user = user.nickname
url = String.replace(api, "{{host}}", host) |> String.replace("{{user}}", user)

with {:ok, %{status_code: 200, body: body}} <-
@httpoison.get(url, [], timeout: 300_000, recv_timeout: 300_000),
{:ok, data} <- Jason.decode(body) do
data2 =
Enum.slice(data, 0, 40)
|> Enum.map(fn x ->
Map.put(x, "id", User.get_or_fetch(x["acct"]).id)
end)

conn
|> json(data2)
conn
|> json(data2)
else
e -> Logger.error("Could not decode user at fetch #{url}, #{inspect(e)}")
end
else
e -> Logger.error("Could not decode user at fetch #{url}, #{inspect(e)}")
json(conn, [])
end
end
end

Loading…
Cancel
Save