Packages
stripity_stripe
2.9.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/core_resources/file_link.ex
defmodule Stripe.FileLink do
@moduledoc """
Work with Stripe file_link objects.
You can:
- Create a file link
- Retrieve a file link
- Update a file link
- List all file links
Stripe API reference: https://stripe.com/docs/api/file_links
"""
use Stripe.Entity
import Stripe.Request
@type t :: %__MODULE__{
id: Stripe.id(),
object: String.t(),
created: Stripe.timestamp(),
expired: boolean,
expires_at: Stripe.timestamp() | nil,
file: Stripe.id() | Stripe.FileUpload.t() | nil,
livemode: boolean,
metadata: map,
url: String.t() | nil
}
defstruct [
:id,
:object,
:created,
:expired,
:expires_at,
:file,
:livemode,
:metadata,
:url
]
@plural_endpoint "file_links"
@doc """
Create a file according to Stripe's file_upload rules.
Takes a map with required 'file' field with FileUpload id or FileUpload
struct, and optional 'expires_at' timestamp and optional 'metadata' map.
"""
@spec create(params, Keyword.t()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params: %{
required(:file) => Stripe.id() | Stripe.FileUpload.t(),
optional(:expires_at) => Stripe.timestamp(),
optional(:metadata) => map
}
def create(params, opts \\ [])
def create(%{file: %Stripe.FileUpload{id: file_id}} = params, opts) do
params = %{params | file: file_id}
create(params, opts)
end
def create(%{file: _} = params, opts) do
new_request(opts)
|> put_endpoint(@plural_endpoint)
|> put_method(:post)
|> put_params(params)
|> make_request()
end
@doc """
Retrieve a file_link.
"""
@spec retrieve(Stripe.id() | t, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
def retrieve(file_link, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(file_link)}")
|> put_method(:get)
|> make_file_upload_request()
end
@doc """
Update a file_link.
Accepts params for 'expires_at' and 'metadata'.
The 'expires_at' param can be either a unix timestamp, or the string "now" to
expire the link immediately.
The 'metadata' on an existing file link can be unset by posting an empty map.
"""
@spec update(Stripe.id() | t, params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params: %{
optional(:expires_at) => String.t() | Stripe.timestamp(),
optional(:metadata) => map
}
def update(file_link, params, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(file_link)}")
|> put_method(:post)
|> put_params(params)
|> make_request()
end
@doc """
List all file links.
"""
@spec list(params, Stripe.options()) :: {:ok, Stripe.List.t(t)} | {:error, Stripe.Error.t()}
when params: %{
optional(:created) =>
Stripe.timestamp()
| %{
optional(:gt) => Stripe.timestamp(),
optional(:gte) => Stripe.timestamp(),
optional(:lt) => Stripe.timestamp(),
optional(:lte) => Stripe.timestamp()
},
optional(:ending_before) => t | Stripe.id(),
optional(:expired) => boolean,
optional(:file) => t | Stripe.id(),
optional(:limit) => 1..100,
optional(:starting_after) => t | Stripe.id()
}
def list(params \\ %{}, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint)
|> put_method(:get)
|> put_params(params)
|> cast_to_id([:ending_before, :starting_after, :limit, :purpose])
|> make_file_upload_request()
end
end