Current section
Files
Jump to
Current section
Files
lib/surge/verifications.ex
defmodule Surge.Verifications do
@moduledoc """
Functions for managing Surge verifications.
"""
alias Surge.Client
alias Surge.Verifications.Verification
alias Surge.Verifications.VerificationCheck
@doc """
Creates a new verification.
## Examples
Surge.Verifications.create(%{phone_number: "+18015551234"})
#=> {:ok, %Surge.Verifications.Verification{id: "vfn_123"}}
client = Surge.Client.new("your_api_key")
Surge.Verifications.create(client, %{to: "+18015551234"})
#=> {:ok, %Surge.Verifications.Verification{id: "vfn_456"}}
"""
@spec create(map()) :: {:ok, Verification.t()} | {:error, Surge.Error.t()}
@spec create(Client.t(), map()) :: {:ok, Verification.t()} | {:error, Surge.Error.t()}
def create(client \\ Client.default_client(), params)
def create(%Client{} = client, params) do
case Client.request(client, :post, "/verifications", json: params) do
{:ok, data} -> {:ok, Verification.from_json(data)}
error -> error
end
end
@doc """
Checks a verification code.
## Examples
Surge.Verifications.check("vfn_123", %{code: "123456"})
#=> {:ok, %Surge.Verifications.VerificationCheck{result: :ok}}
client = Surge.Client.new("your_api_key")
Surge.Verifications.check(client, "verification_123", %{code: "000000"})
#=> {:ok, %Surge.Verifications.VerificationCheck{result: :expired}}
"""
@spec check(String.t(), map()) :: {:ok, VerificationCheck.t()} | {:error, Surge.Error.t()}
@spec check(Client.t(), String.t(), map()) ::
{:ok, VerificationCheck.t()} | {:error, Surge.Error.t()}
def check(client \\ Client.default_client(), verification_id, params)
def check(%Client{} = client, verification_id, params) do
opts = [json: params, path_params: [verification_id: verification_id]]
case Client.request(client, :post, "/verifications/:verification_id/checks", opts) do
{:ok, data} -> {:ok, VerificationCheck.from_json(data)}
error -> error
end
end
end