Deepl: use :base_url

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
marcin mikołajczak 2022-11-05 21:41:58 +01:00
parent 2b739faa7e
commit fedae008c8
3 changed files with 36 additions and 16 deletions

View file

@ -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"]
},

View file

@ -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

View file

@ -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