From fedae008c8b4a017b56a76c9a3b18bc031e520c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Sat, 5 Nov 2022 21:41:58 +0100 Subject: [PATCH] Deepl: use :base_url MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- config/description.exs | 10 +++---- lib/pleroma/language/translation/deepl.ex | 15 +++-------- .../language/translation/deepl_test.ex | 27 +++++++++++++++++++ 3 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 test/pleroma/language/translation/deepl_test.ex diff --git a/config/description.exs b/config/description.exs index cc09e2991..b1730bab3 100644 --- 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 index 81048378c..5a3474090 100644 --- 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 new file mode 100644 index 000000000..0c29b84a4 --- /dev/null +++ b/test/pleroma/language/translation/deepl_test.ex @@ -0,0 +1,27 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors +# 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