do nothing if configuration is skipped
authorHakaba Hitoyo <hakabahitoyo@example.com>
Tue, 17 Jul 2018 07:45:18 +0000 (16:45 +0900)
committerHakaba Hitoyo <hakabahitoyo@example.com>
Tue, 17 Jul 2018 07:45:18 +0000 (16:45 +0900)
config/config.exs
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex

index 3583e7b46498d27f6bca943a121e00ba52030b39..4d5a7564ad92220edd60e0fdedd6957c337da051 100644 (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.
index 2f8139fe6d9fa78d82385ac9b9d5f057c3afc440..ac8f794e9275c0d6e15874cf78ff1d68f79063b0 100644 (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