Current section

Files

Jump to
iyzico lib model card.ex
Raw

lib/model/card.ex

defmodule Iyzico.Card do
@typedoc """
Represents a card to perform the checkout.
"""
@enforce_keys ~w(holder_name number exp_year exp_month cvc)a
defstruct [
:holder_name,
:number,
:exp_year,
:exp_month,
:cvc,
:register?
]
@type t :: %__MODULE__{
holder_name: binary,
number: binary,
exp_year: integer,
exp_month: integer,
cvc: integer,
register?: integer
}
def create_card(card = %Iyzico.Card{}) do
end
@doc """
Invalidates a registration of given card.
"""
@spec delete_card(Iyzico.Card.t) ::
:ok |
{:error, :not_found}
def delete_card(card = %Iyzico.Card{}) do
end
@doc """
Same as `delete_card/1` but raises `Iyzico.CardNotRegistered` error if card is not registered.
"""
@spec delete_card!(Iyzico.Card.t) :: no_return
def delete_card!(card = %Iyzico.Card{}) do
end
@doc """
Retrieves all cards of a user.
"""
@spec retrieve_cards() :: list
def retrieve_cards() do
end
def valid?(card = %Iyzico.Card{}) do
end
defp validate_number(number) when is_binary(number) do
Luhn.valid? number
end
defp validate_cvc(cvc) when is_integer(cvc) do
cvc >= 100 and cvc < 1000
end
end
defimpl Iyzico.IOListConvertible, for: Iyzico.Card do
def to_iolist(data) do
[{"cardHolderName", data.holder_name},
{"cardNumber", data.number},
{"expireYear", data.exp_year},
{"expireMonth", data.exp_month},
{"cvc", data.cvc},
{"registerCard", data.register?}]
end
end