Current section
Files
Jump to
Current section
Files
lib/surge/phone_numbers.ex
defmodule Surge.PhoneNumbers do
@moduledoc """
Functions for managing Surge phone numbers.
"""
alias Surge.Client
alias Surge.PhoneNumbers.PhoneNumber
@doc """
Purchases a new phone number.
## Examples
Surge.PhoneNumbers.purchase("acct_123", %{type: :toll_free})
#=> {:ok, %Surge.PhoneNumbers.PhoneNumber{}}
# Purchase with area code search
Surge.PhoneNumbers.purchase("acct_123", %{type: :local, area_code: "415"})
#=> {:ok, %Surge.PhoneNumbers.PhoneNumber{}}
client = Surge.Client.new("your_api_key")
Surge.PhoneNumbers.purchase(client, "acct_123", %{area_code: "212", type: :local})
#=> {:ok, %Surge.PhoneNumbers.PhoneNumber{}}
"""
@spec purchase(String.t(), map()) :: {:ok, PhoneNumber.t()} | {:error, Surge.Error.t()}
@spec purchase(Client.t(), String.t(), map()) ::
{:ok, PhoneNumber.t()} | {:error, Surge.Error.t()}
def purchase(client \\ Client.default_client(), account_id, params)
def purchase(%Client{} = client, account_id, params) do
opts = [json: params, path_params: [account_id: account_id]]
case Client.request(client, :post, "/accounts/:account_id/phone_numbers", opts) do
{:ok, data} -> {:ok, PhoneNumber.from_json(data)}
error -> error
end
end
end