aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/twitter_api/twitter_api.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/web/twitter_api/twitter_api.ex')
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api.ex39
1 files changed, 8 insertions, 31 deletions
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex
index 5d7948507..92b071a81 100644
--- a/lib/pleroma/web/twitter_api/twitter_api.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api.ex
@@ -3,14 +3,12 @@
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
- import Pleroma.Web.Gettext
-
alias Pleroma.Emails.Mailer
alias Pleroma.Emails.UserEmail
- alias Pleroma.Repo
alias Pleroma.User
alias Pleroma.UserInviteToken
+ @spec register_user(map(), keyword()) :: {:ok, User.t()} | {:error, map()}
def register_user(params, opts \\ []) do
params =
params
@@ -28,18 +26,20 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
end
end
+ @spec create_user_with_invite(map(), keyword()) :: {:ok, User.t()} | {:error, map()}
defp create_user_with_invite(params, opts) do
with %{token: token} when is_binary(token) <- params,
- %UserInviteToken{} = invite <- Repo.get_by(UserInviteToken, %{token: token}),
+ {:ok, invite} <- UserInviteToken.find_by_token(token),
true <- UserInviteToken.valid_invite?(invite) do
UserInviteToken.update_usage!(invite)
create_user(params, opts)
else
- nil -> {:error, "Invalid token"}
- _ -> {:error, "Expired token"}
+ nil -> {:error, %{invite: ["Invalid token"]}}
+ _ -> {:error, %{invite: ["Expired token"]}}
end
end
+ @spec create_user(map(), keyword()) :: {:ok, User.t()} | {:error, map()}
defp create_user(params, opts) do
changeset = User.register_changeset(%User{}, params, opts)
@@ -52,7 +52,6 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
errors =
changeset
|> Ecto.Changeset.traverse_errors(fn {msg, _opts} -> msg end)
- |> Jason.encode!()
{:error, errors}
end
@@ -104,26 +103,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
) do
:ok
else
- {:error, :captcha_error} ->
- captcha_error(dgettext("errors", "CAPTCHA Error"))
-
- {:error, :invalid} ->
- captcha_error(dgettext("errors", "Invalid CAPTCHA"))
-
- {:error, :kocaptcha_service_unavailable} ->
- captcha_error(dgettext("errors", "Kocaptcha service unavailable"))
-
- {:error, :expired} ->
- captcha_error(dgettext("errors", "CAPTCHA expired"))
-
- {:error, :already_used} ->
- captcha_error(dgettext("errors", "CAPTCHA already used"))
-
- {:error, :invalid_answer_data} ->
- captcha_error(dgettext("errors", "Invalid answer data"))
-
{:error, error} ->
- captcha_error(error)
+ {:error, %{captcha: [Pleroma.Captcha.Error.message(error)]}}
end
end
@@ -131,12 +112,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
[:captcha_solution, :captcha_token, :captcha_answer_data]
|> Enum.find_value(:ok, fn key ->
unless is_binary(params[key]) do
- error = dgettext("errors", "Invalid CAPTCHA (Missing parameter: %{name})", name: key)
- {:error, error}
+ {:error, Pleroma.Captcha.Error.message(:missing_field, %{name: key})}
end
end)
end
-
- # For some reason FE expects error message to be a serialized JSON
- defp captcha_error(error), do: {:error, Jason.encode!(%{captcha: [error]})}
end