diff --git a/lib/balance.ex b/lib/balance.ex index 21c609d..37cc21f 100644 --- a/lib/balance.ex +++ b/lib/balance.ex @@ -1,6 +1,5 @@ defmodule PINXS.Balance do alias PINXS.HTTP.API - alias PINXS.Response alias __MODULE__ @moduledoc """ @@ -18,7 +17,6 @@ defmodule PINXS.Balance do """ @spec get() :: {:ok, Balance.t()} | {:error, PINXS.Error.t()} def get() do - API.get("/balance") - |> Response.transform(__MODULE__) + API.get("/balance", __MODULE__) end end diff --git a/lib/bank_accounts/bank_account.ex b/lib/bank_accounts/bank_account.ex index cc7c278..56c5bfb 100644 --- a/lib/bank_accounts/bank_account.ex +++ b/lib/bank_accounts/bank_account.ex @@ -1,6 +1,5 @@ defmodule PINXS.BankAccounts.BankAccount do alias PINXS.HTTP.API - alias PINXS.Response alias __MODULE__ @derive [Poison.Encoder] @@ -28,7 +27,6 @@ defmodule PINXS.BankAccounts.BankAccount do """ @spec create(BankAccount.t) :: {:ok, BankAccount.t} | {:error, PINXS.Error.t} def create(%BankAccount{} = bank_account) do - API.post("/bank_accounts", bank_account) - |> Response.transform(__MODULE__) + API.post("/bank_accounts", bank_account, __MODULE__) end end diff --git a/lib/cards/card.ex b/lib/cards/card.ex index d4afbb4..93ae161 100644 --- a/lib/cards/card.ex +++ b/lib/cards/card.ex @@ -1,6 +1,5 @@ defmodule PINXS.Cards.Card do alias PINXS.HTTP.API - alias PINXS.Response alias __MODULE__ @moduledoc """ @@ -56,7 +55,6 @@ defmodule PINXS.Cards.Card do """ @spec create(Card.t()) :: {:ok, Card.t()} | {:error, PINXS.Error.t()} def create(%Card{} = card) do - API.post("/cards", card) - |> Response.transform(__MODULE__) + API.post("/cards", card, __MODULE__) end end diff --git a/lib/charges/charge.ex b/lib/charges/charge.ex index 23cf1bb..9f846ae 100644 --- a/lib/charges/charge.ex +++ b/lib/charges/charge.ex @@ -1,6 +1,5 @@ defmodule PINXS.Charges.Charge do alias PINXS.HTTP.API - alias PINXS.Response alias __MODULE__ @moduledoc """ @@ -75,8 +74,7 @@ defmodule PINXS.Charges.Charge do Captures a previously authorized charge """ def capture(%Charge{token: token}, amount \\ %{}) do - API.put("/charges/#{token}/capture", amount) - |> Response.transform(__MODULE__) + API.put("/charges/#{token}/capture", amount, __MODULE__) end @doc """ @@ -98,8 +96,7 @@ defmodule PINXS.Charges.Charge do do: create_charge(charge_map) defp create_charge(charge_map) do - API.post("/charges", charge_map) - |> Response.transform(__MODULE__) + API.post("/charges", charge_map, __MODULE__) end @doc """ @@ -107,8 +104,7 @@ defmodule PINXS.Charges.Charge do """ @spec get_all() :: {:ok, [Charge.t]} | {:error, PINXS.Error.t} def get_all() do - API.get("/charges") - |> Response.transform(__MODULE__) + API.get("/charges", __MODULE__) end @doc """ @@ -116,8 +112,7 @@ defmodule PINXS.Charges.Charge do """ @spec get_all(integer()) :: {:ok, [Charge.t]} | {:error, PINXS.Error.t} def get_all(page) do - API.get("/charges?page=#{page}") - |> Response.transform(__MODULE__) + API.get("/charges?page=#{page}", __MODULE__) end @doc """ @@ -125,7 +120,6 @@ defmodule PINXS.Charges.Charge do """ @spec get(String.t()) :: {:ok, Charge.t} | {:error, PINXS.Error.t()} def get(token) do - API.get("/charges/#{token}") - |> Response.transform(__MODULE__) + API.get("/charges/#{token}", __MODULE__) end end diff --git a/lib/customers/customer.ex b/lib/customers/customer.ex index ebacb25..79fb5a0 100644 --- a/lib/customers/customer.ex +++ b/lib/customers/customer.ex @@ -1,6 +1,5 @@ defmodule PINXS.Customers.Customer do alias PINXS.HTTP.API - alias PINXS.Response alias PINXS.Cards.Card alias PINXS.Charges.Charge alias __MODULE__ @@ -40,13 +39,11 @@ defmodule PINXS.Customers.Customer do """ @spec add_card(Customer.t(), Card.t()) :: {:ok, Card.t()} | {:error, PINXS.Error.t()} def add_card(%Customer{token: token}, %Card{} = card) do - API.post("/customers/#{token}/cards", card) - |> Response.transform(Card) + API.post("/customers/#{token}/cards", card, Card) end def add_card(%Customer{token: token}, card_token) when is_binary(card_token) do - API.post("/customers/#{token}/cards", %{card_token: card_token}) - |> Response.transform(Card) + API.post("/customers/#{token}/cards", %{card_token: card_token}, Card) end @doc """ @@ -60,8 +57,7 @@ defmodule PINXS.Customers.Customer do do: create_customer(customer) defp create_customer(customer) do - API.post("/customers", customer) - |> Response.transform(__MODULE__) + API.post("/customers", customer, __MODULE__) end @doc """ @@ -69,8 +65,7 @@ defmodule PINXS.Customers.Customer do """ @spec delete(Customer.t()) :: {:ok, true} | {:error, PINXS.Error.t()} def delete(%Customer{token: token}) do - API.delete("/customers/#{token}") - |> Response.transform(__MODULE__) + API.delete("/customers/#{token}", __MODULE__) end @doc """ @@ -79,8 +74,7 @@ defmodule PINXS.Customers.Customer do @spec delete_card(Customer.t(), String.t()) :: {:ok, Customer.t()} | {:error, PINXS.Error.t()} def delete_card(%Customer{token: token}, card_token) do - API.delete("/customers/#{token}/cards/#{card_token}") - |> Response.transform(__MODULE__) + API.delete("/customers/#{token}/cards/#{card_token}", __MODULE__) end @doc """ @@ -88,8 +82,7 @@ defmodule PINXS.Customers.Customer do """ @spec get(String.t()) :: {:ok, Customer.t()} | {:error, PINXS.Error.t()} def get(token) do - API.get("/customers/#{token}") - |> Response.transform(__MODULE__) + API.get("/customers/#{token}", __MODULE__) end @doc """ @@ -97,8 +90,7 @@ defmodule PINXS.Customers.Customer do """ @spec get_all() :: {:ok, [Customer.t()]} | {:error, PINXS.Error.t()} def get_all() do - API.get("/customers") - |> Response.transform(__MODULE__) + API.get("/customers", __MODULE__) end @doc """ @@ -106,8 +98,7 @@ defmodule PINXS.Customers.Customer do """ @spec get_all(integer()) :: {:ok, [Customer.t()]} | {:error, PINXS.Error.t()} def get_all(page) when is_integer(page) do - API.get("/customers?page=#{page}") - |> Response.transform(__MODULE__) + API.get("/customers?page=#{page}", __MODULE__) end @doc """ @@ -115,8 +106,7 @@ defmodule PINXS.Customers.Customer do """ @spec get_cards(Customer.t()) :: {:ok, [Card.t()]} | {:error, PINXS.Error.t()} def get_cards(%Customer{token: token}) do - API.get("/customers/#{token}/cards") - |> Response.transform(Card) + API.get("/customers/#{token}/cards", Card) end @doc """ @@ -124,8 +114,7 @@ defmodule PINXS.Customers.Customer do """ @spec get_charges(Customer.t()) :: {:ok, [Charge.t]} | {:error, PINXS.Error.t()} def get_charges(%Customer{token: token}) do - API.get("/customers/#{token}/charges") - |> Response.transform(PINXS.Charges.Charge) + API.get("/customers/#{token}/charges", PINXS.Charges.Charge) end # TODO Add 'Subscriptions' @@ -135,7 +124,6 @@ defmodule PINXS.Customers.Customer do """ @spec update(Customer.t(), map()) :: {:ok, Customer.t()} | {:error, PINXS.Error.t()} def update(%Customer{token: token}, params) when not is_nil(token) do - API.put("/customers/#{token}", params) - |> Response.transform(__MODULE__) + API.put("/customers/#{token}", params, __MODULE__) end end diff --git a/lib/http/api.ex b/lib/http/api.ex index fc802b1..0eac9da 100644 --- a/lib/http/api.ex +++ b/lib/http/api.ex @@ -1,5 +1,6 @@ defmodule PINXS.HTTP.API do alias PINXS.HTTP.ClientBase, as: Client + alias PINXS.Response @moduledoc """ The API module provides low level functions for communicating with @@ -10,7 +11,11 @@ defmodule PINXS.HTTP.API do """ def delete(url), do: Client.delete(url) + def delete(url, module), do: delete(url) |> Response.transform(module) def get(url), do: Client.get(url) + def get(url, module), do: get(url) |> Response.transform(module) def post(url, params), do: Client.post(url, params) + def post(url, params, module), do: post(url, params) |> Response.transform(module) def put(url, params), do: Client.put(url, params) + def put(url, params, module), do: put(url, params) |> Response.transform(module) end diff --git a/lib/recipients/recipient.ex b/lib/recipients/recipient.ex index 843f05d..ff2513d 100644 --- a/lib/recipients/recipient.ex +++ b/lib/recipients/recipient.ex @@ -1,6 +1,5 @@ defmodule PINXS.Recipients.Recipient do alias PINXS.HTTP.API - alias PINXS.Response alias __MODULE__ @moduledoc """ @@ -40,13 +39,11 @@ defmodule PINXS.Recipients.Recipient do """ @spec create(Recipient.t()) :: {:ok, Recipient.t()} | {:error, PINXS.Error.t()} def create(%Recipient{bank_account: bank_account} = recipient) when not is_nil(bank_account) do - API.post("/recipients", recipient) - |> Response.transform(__MODULE__) + API.post("/recipients", recipient, __MODULE__) end def create(%Recipient{bank_account_token: bank_account_token} = recipient) when not is_nil(bank_account_token) do - API.post("/recipients", recipient) - |> Response.transform(__MODULE__) + API.post("/recipients", recipient, __MODULE__) end @@ -55,8 +52,7 @@ defmodule PINXS.Recipients.Recipient do """ @spec get(String.t) :: {:ok, Recipient.t} | {:error, PINXS.Error.t} def get(recipient_token) do - API.get("/recipients/#{recipient_token}") - |> Response.transform(__MODULE__) + API.get("/recipients/#{recipient_token}", __MODULE__) end @doc """ @@ -64,23 +60,20 @@ defmodule PINXS.Recipients.Recipient do """ @spec get_all() :: {:ok, [Recipient.t]} | {:error, PINXS.Error.t} def get_all() do - API.get("/recipients") - |> Response.transform(__MODULE__) + API.get("/recipients", __MODULE__) end @doc """ Get a specific page of recipients """ def get_all(page) do - API.get("/recipients?page=#{page}") - |> Response.transform(__MODULE__) + API.get("/recipients?page=#{page}", __MODULE__) end @doc """ Update recipient details """ def update_recipient(%Recipient{ token: token}, params) do - API.put("/recipients/#{token}", params) - |> Response.transform(__MODULE__) + API.put("/recipients/#{token}", params, __MODULE__) end end diff --git a/lib/refunds/refund.ex b/lib/refunds/refund.ex index 78c266a..0f8c7e8 100644 --- a/lib/refunds/refund.ex +++ b/lib/refunds/refund.ex @@ -1,6 +1,5 @@ defmodule PINXS.Refunds.Refund do alias PINXS.HTTP.API - alias PINXS.Response alias PINXS.Charges.Charge alias __MODULE__ @@ -36,8 +35,7 @@ defmodule PINXS.Refunds.Refund do """ @spec create(Charge.t, map()) :: {:ok, Refund.t} | {:error, PINXS.Error.t} def create(%Charge{token: token}, amount \\ %{}) do - API.post("/charges/#{token}/refunds", amount) - |> Response.transform(__MODULE__) + API.post("/charges/#{token}/refunds", amount, __MODULE__) end @doc """ @@ -45,8 +43,7 @@ defmodule PINXS.Refunds.Refund do """ @spec get(Refund.t) :: {:ok, Refund.t} | {:error, PINXS.Error.t} def get(%Refund{token: token}) do - API.get("/refunds/#{token}") - |> Response.transform(__MODULE__) + API.get("/refunds/#{token}", __MODULE__) end @doc """ @@ -54,16 +51,14 @@ defmodule PINXS.Refunds.Refund do """ @spec get_all() :: {:ok, [Refund.t]} | {:error, PINXS.Error.t} def get_all() do - API.get("/refunds") - |> Response.transform(__MODULE__) + API.get("/refunds", __MODULE__) end @doc """ Gets a specific page of refunds """ @spec get_all(integer()) :: {:ok, [Refund.t]} | {:error, PINXS.Error.t} def get_all(page) when is_integer(page) do - API.get("/refunds?page=#{page}") - |> Response.transform(__MODULE__) + API.get("/refunds?page=#{page}", __MODULE__) end @doc """ @@ -71,8 +66,7 @@ defmodule PINXS.Refunds.Refund do """ @spec get_all_for_charge(Charge.t) :: {:ok, [Refund.t]} | {:error, PINXS.Error.t} def get_all_for_charge(%Charge{token: token}) do - API.get("/charges/#{token}/refunds") - |> Response.transform(__MODULE__) + API.get("/charges/#{token}/refunds", __MODULE__) end diff --git a/lib/transfers/transfer.ex b/lib/transfers/transfer.ex index 2f99764..0e65e91 100644 --- a/lib/transfers/transfer.ex +++ b/lib/transfers/transfer.ex @@ -1,6 +1,5 @@ defmodule PINXS.Transfers.Transfer do alias PINXS.HTTP.API - alias PINXS.Response alias __MODULE__ @moduledoc """ @@ -42,8 +41,7 @@ defmodule PINXS.Transfers.Transfer do """ @spec create(Transfer.t) :: {:ok, Transfer.t} | {:error, PINXS.Error.t} def create(%Transfer{currency: "AUD"} = transfer) do - API.post("/transfers", transfer) - |> Response.transform(__MODULE__) + API.post("/transfers", transfer, __MODULE__) end def create(%Transfer{} = transfer) do @@ -56,8 +54,7 @@ defmodule PINXS.Transfers.Transfer do """ @spec get(String.t) :: {:ok, Transfer.t} | {:error, PINXS.Error.t} def get(transfer_token) do - API.get("/transfers/#{transfer_token}") - |> Response.transform(__MODULE__) + API.get("/transfers/#{transfer_token}", __MODULE__) end @doc """ @@ -65,8 +62,7 @@ defmodule PINXS.Transfers.Transfer do """ @spec get_all() :: {:ok, [Transfer.t]} | {:error, PINXS.Error.t} def get_all() do - API.get("/transfers") - |> Response.transform(__MODULE__) + API.get("/transfers", __MODULE__) end @doc """ @@ -74,12 +70,10 @@ defmodule PINXS.Transfers.Transfer do """ @spec get_all(non_neg_integer()) :: {:ok, [Transfer.t]} | {:error, PINXS.Error.t} def get_all(page) when is_integer(page) do - API.get("/transfers?page=#{page}") - |> Response.transform(__MODULE__) + API.get("/transfers?page=#{page}", __MODULE__) end def get_line_items(transfer_token) do - API.get("/transfers/#{transfer_token}/line_items") - |> Response.transform(__MODULE__) + API.get("/transfers/#{transfer_token}/line_items",__MODULE__) end end