defmodule Dwolla.Event do @moduledoc """ Functions for `events` endpoint. """ alias Dwolla.Utils defstruct id: nil, created: nil, topic: nil, resource: nil, resource_id: nil @type t :: %__MODULE__{id: String.t, created: String.t, topic: String.t, resource: String.t, resource_id: String.t } @type token :: String.t @type id :: String.t @type error :: HTTPoison.Error.t | Dwolla.Errors.t | tuple @endpoint "events" @doc """ Lists events. Results paginated. """ @spec list(token, integer | nil, integer | nil) :: {:ok, [Dwolla.Event.t]} | {:error, error} def list(token, limit \\ nil, offset \\ nil) do endpoint = case {limit, offset} do {nil, nil} -> @endpoint {limit, nil} -> "#{@endpoint}/?" <> Utils.encode_params(%{limit: limit}) _ -> "#{@endpoint}/?" <> Utils.encode_params(%{limit: limit, offset: offset}) end Dwolla.make_request_with_token(:get, endpoint, token) |> Utils.handle_resp(:event) end @doc """ Gets a funding source by id. """ @spec get(token, id) :: {:ok, Dwolla.Event.t} | {:error, error} def get(token, id) do endpoint = @endpoint <> "/#{id}" Dwolla.make_request_with_token(:get, endpoint, token) |> Utils.handle_resp(:event) end end