Packages
stripity_stripe
2.16.0
3.3.2
3.3.1
3.2.0
3.1.1
3.1.0
3.0.0
2.17.3
2.17.2
2.17.1
2.17.0
2.16.0
2.15.1
2.15.0
2.14.1
2.14.0
2.13.0
2.12.1
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.2
2.7.1
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.3
2.2.2
2.2.1
2.2.0
2.1.0
2.0.1
2.0.0
2.0.0-alpha.11
2.0.0-alpha.10
2.0.0-alpha.9
2.0.0-alpha.8
2.0.0-alpha.7
2.0.0-alpha.6
2.0.0-alpha.5
2.0.0-alpha.4
2.0.0-alpha.3
2.0.0-alpha.2
2.0.0-alpha.1
1.6.2
1.6.1
1.6.0
1.4.0
1.3.0
1.2.0
1.1.0
0.5.0
0.4.0
0.3.0
0.2.0
A Stripe client for Elixir.
Current section
Files
Jump to
Current section
Files
lib/stripe/terminal/reader.ex
defmodule Stripe.Terminal.Reader do
@moduledoc """
A Reader represents a physical device for accepting payment details
You can:
- [Create a Reader](https://stripe.com/docs/api/terminal/readers/create)
- [Retrieve a Reader](https://stripe.com/docs/api/terminal/readers/retrieve)
- [Update a Reader](https://stripe.com/docs/api/terminal/readers/update)
- [Delete a Reader](https://stripe.com/docs/api/terminal/readers/delete)
- [List all Readers](https://stripe.com/docs/api/terminal/readers/list)
"""
use Stripe.Entity
import Stripe.Request
require Stripe.Util
@type t :: %__MODULE__{
id: Stripe.id(),
device_type: String.t(),
label: String.t(),
location: String.t(),
metadata: Stripe.Types.metadata(),
serial_number: String.t(),
status: String.t(),
object: String.t(),
device_sw_version: String.t(),
ip_address: String.t(),
livemode: boolean()
}
defstruct [
:id,
:device_type,
:label,
:location,
:metadata,
:serial_number,
:status,
:object,
:device_sw_version,
:ip_address,
:livemode
]
@plural_endpoint "terminal/readers"
@doc """
Create a new reader
"""
@spec create(params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params:
%{
:registration_code => String.t(),
optional(:label) => String.t(),
optional(:location) => Stripe.id(),
optional(:metadata) => Stripe.Types.metadata()
}
| %{}
def create(params, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint)
|> put_params(params)
|> put_method(:post)
|> make_request()
end
@doc """
Retrieve a reader with a specified `id`.
"""
@spec retrieve(Stripe.id() | t, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
def retrieve(id, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}")
|> put_method(:get)
|> make_request()
end
@doc """
Update a reader.
Takes the `id` and a map of changes.
"""
@spec update(Stripe.id() | t, params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params: %{
optional(:label) => String.t(),
optional(:metadata) => Stripe.Types.metadata()
}
def update(id, params, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}")
|> put_method(:post)
|> put_params(params)
|> make_request()
end
@doc """
Delete an reader.
"""
@spec delete(Stripe.id() | t, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
def delete(id, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}")
|> put_method(:delete)
|> make_request()
end
@doc """
List all readers.
"""
@spec list(params, Stripe.options()) :: {:ok, Stripe.List.t(t)} | {:error, Stripe.Error.t()}
when params: %{
optional(:device_type) => String.t(),
optional(:location) => t | Stripe.id(),
optional(:status) => String.t(),
optional(:ending_before) => t | Stripe.id(),
optional(:limit) => 1..100,
optional(:starting_after) => t | Stripe.id()
}
def list(params \\ %{}, opts \\ []) do
new_request(opts)
|> prefix_expansions()
|> put_endpoint(@plural_endpoint)
|> put_method(:get)
|> put_params(params)
|> cast_to_id([:ending_before, :starting_after])
|> make_request()
end
end