commit: fedae008c8b4a017b56a76c9a3b18bc031e520c8
parent 2b739faa7edc69781eab85da4f122bad05d0576d
Author: marcin mikołajczak <git@mkljczk.pl>
Date: Sat, 5 Nov 2022 21:41:58 +0100
Deepl: use :base_url
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
Diffstat:
3 files changed, 36 insertions(+), 16 deletions(-)
diff --git a/config/description.exs b/config/description.exs
@@ -3540,10 +3540,10 @@ config :pleroma, :config_description, [
},
%{
group: {:subgroup, Pleroma.Language.Translation.Deepl},
- key: :plan,
- label: "DeepL plan",
- type: {:dropdown, :atom},
- suggestions: [:free, :pro]
+ key: :base_url,
+ label: "DeepL base URL",
+ type: :string,
+ suggestions: ["https://api-free.deepl.com", "https://api.deepl.com"]
},
%{
group: {:subgroup, Pleroma.Language.Translation.Deepl},
@@ -3555,7 +3555,7 @@ config :pleroma, :config_description, [
%{
group: {:subgroup, Pleroma.Language.Translation.Libretranslate},
key: :base_url,
- label: "LibreTranslate plan",
+ label: "LibreTranslate instance URL",
type: :string,
suggestions: ["https://libretranslate.com"]
},
diff --git a/lib/pleroma/language/translation/deepl.ex b/lib/pleroma/language/translation/deepl.ex
@@ -11,12 +11,12 @@ defmodule Pleroma.Language.Translation.Deepl do
@impl Provider
def configured? do
- not_empty_string(get_plan()) and not_empty_string(get_api_key())
+ is_atom(get_base_url()) and not_empty_string(get_api_key())
end
@impl Provider
def translate(content, source_language, target_language) do
- endpoint = endpoint_url()
+ endpoint = get_base_url()
case Pleroma.HTTP.post(
endpoint <>
@@ -58,15 +58,8 @@ defmodule Pleroma.Language.Translation.Deepl do
end
end
- defp endpoint_url do
- case get_plan() do
- :free -> "https://api-free.deepl.com/v2/translate"
- _ -> "https://api.deepl.com/v2/translate"
- end
- end
-
- defp get_plan do
- Pleroma.Config.get([__MODULE__, :plan])
+ defp get_base_url do
+ Pleroma.Config.get([__MODULE__, :base_url])
end
defp get_api_key do
diff --git a/test/pleroma/language/translation/deepl_test.ex b/test/pleroma/language/translation/deepl_test.ex
@@ -0,0 +1,27 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Language.Translation.DeeplTest do
+ use Pleroma.Web.ConnCase
+
+ alias Pleroma.Language.Translation.Deepl
+
+ test "it translates text" do
+ Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
+ clear_config([Pleroma.Language.Translation.Deepl, :base_url], "https://api-free.deepl.com")
+ clear_config([Pleroma.Language.Translation.Deepl, :api_key], "API_KEY")
+
+ {:ok, res} =
+ Deepl.translate(
+ "USUNĄĆ ŚLEDZIKA!Wklej to na swojego śledzika. Jeżeli uzbieramy 70% użytkowników nk...to usuną śledzika!!!",
+ "pl",
+ "en"
+ )
+
+ assert %{
+ detected_source_language: "PL",
+ provider: "DeepL"
+ } = res
+ end
+end