service.ex (1037B)
- # Pleroma: A lightweight social networking server
- # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
- # SPDX-License-Identifier: AGPL-3.0-only
- defmodule Pleroma.Captcha.Service do
- @doc """
- Request new captcha from a captcha service.
- Returns:
- Type/Name of the service, the token to identify the captcha,
- the data of the answer and service-specific data to use the newly created captcha
- """
- @callback new() :: %{
- type: atom(),
- token: String.t(),
- answer_data: any()
- }
- @doc """
- Validated the provided captcha solution.
- Arguments:
- * `token` the captcha is associated with
- * `captcha` solution of the captcha to validate
- * `answer_data` is the data needed to validate the answer (presumably encrypted)
- Returns:
- `true` if captcha is valid, `false` if not
- """
- @callback validate(
- token :: String.t(),
- captcha :: String.t(),
- answer_data :: any()
- ) :: :ok | {:error, String.t()}
- end