Deduplicate translations code
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
parent
f5ed0e2e66
commit
d65758d8f7
1 changed files with 34 additions and 34 deletions
|
|
@ -536,26 +536,33 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do
|
|||
|
||||
@doc "POST /api/v1/statuses/:id/translate"
|
||||
def translate(%{assigns: %{user: user}, body_params: params} = conn, %{id: id}) do
|
||||
with {:enabled, true} <- {:enabled, Config.get([:translator, :enabled])},
|
||||
%Activity{} = activity <- Activity.get_by_id_with_object(id),
|
||||
{:visible, true} <- {:visible, Visibility.visible_for_user?(activity, user)},
|
||||
translation_module <- Config.get([:translator, :module]),
|
||||
{:ok, detected, translation} <-
|
||||
fetch_or_translate(
|
||||
activity.id,
|
||||
activity.object.data["content"],
|
||||
with {:ok, translation} <-
|
||||
do_translate(
|
||||
id,
|
||||
user,
|
||||
Map.get(params, :source_lang, nil),
|
||||
Map.get(params, :lang, nil),
|
||||
translation_module
|
||||
Map.get(params, :lang, nil)
|
||||
) do
|
||||
json(
|
||||
conn,
|
||||
%{
|
||||
content: translation,
|
||||
detected_source_language: detected,
|
||||
provider: translation_module.name()
|
||||
}
|
||||
)
|
||||
json(conn, translation)
|
||||
else
|
||||
{:enabled, false} ->
|
||||
conn
|
||||
|> put_status(:forbidden)
|
||||
|> json(%{"error" => "Translation is not enabled"})
|
||||
|
||||
{:visible, false} ->
|
||||
{:error, :not_found}
|
||||
|
||||
e ->
|
||||
e
|
||||
end
|
||||
end
|
||||
|
||||
@doc "GET /api/v1/statuses/:id/translations/:language"
|
||||
def translate_legacy(%{assigns: %{user: user}} = conn, %{id: id, language: language} = params) do
|
||||
with {:ok, %{content: translation, detected_source_language: detected}} <-
|
||||
do_translate(id, user, Map.get(params, :from, nil), language) do
|
||||
json(conn, %{detected_language: detected, text: translation})
|
||||
else
|
||||
{:enabled, false} ->
|
||||
conn
|
||||
|
|
@ -570,8 +577,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do
|
|||
end
|
||||
end
|
||||
|
||||
@doc "GET /api/v1/statuses/:id/translations/:language"
|
||||
def translate_legacy(%{assigns: %{user: user}} = conn, %{id: id, language: language} = params) do
|
||||
defp do_translate(id, user, source_language, target_language) do
|
||||
with {:enabled, true} <- {:enabled, Config.get([:translator, :enabled])},
|
||||
%Activity{} = activity <- Activity.get_by_id_with_object(id),
|
||||
{:visible, true} <- {:visible, Visibility.visible_for_user?(activity, user)},
|
||||
|
|
@ -580,22 +586,16 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do
|
|||
fetch_or_translate(
|
||||
activity.id,
|
||||
activity.object.data["content"],
|
||||
Map.get(params, :from, nil),
|
||||
language,
|
||||
source_language,
|
||||
target_language,
|
||||
translation_module
|
||||
) do
|
||||
json(conn, %{detected_language: detected, text: translation})
|
||||
else
|
||||
{:enabled, false} ->
|
||||
conn
|
||||
|> put_status(:bad_request)
|
||||
|> json(%{"error" => "Translation is not enabled"})
|
||||
|
||||
{:visible, false} ->
|
||||
{:error, :not_found}
|
||||
|
||||
e ->
|
||||
e
|
||||
{:ok,
|
||||
%{
|
||||
content: translation,
|
||||
detected_source_language: detected,
|
||||
provider: translation_module.name()
|
||||
}}
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue