Packages

Small HTTPoison based wrapper around PrintNode API.

Current section

Files

Jump to
ex_printnode lib print_node computers.ex
Raw

lib/print_node/computers.ex

defmodule PrintNode.Computers do
@moduledoc """
API interface for Computer operations
"""
alias PrintNode.Client
alias PrintNode.Resources.Computer
@spec list(PrintNode.options()) ::
{:error, String.t()} | {:ok, [%Computer{}]}
def list(options) do
Client.get!("/computers", Client.prepare_request_headers(options))
|> case do
%{body: body, status_code: 200} ->
{:ok, body |> Enum.map(&struct(Computer, &1))}
%{body: body, status_code: _status_code} ->
{:error, body[:message]}
end
end
@spec get(String.t() | integer(), PrintNode.options()) ::
{:error, String.t()} | {:ok, [%Computer{}]}
def get(computer_set, options) do
Client.get!(
"/computers/#{computer_set}",
Client.prepare_request_headers(options)
)
|> case do
%{body: body, status_code: 200} ->
{:ok, body |> Enum.map(&struct(Computer, &1))}
%{body: body, status_code: _status_code} ->
{:error, body[:message]}
end
end
@spec delete :: none
def delete() do
throw({:not_implemented, "please raise PR"})
end
def delete(_computer_set) do
throw({:not_implemented, "please raise PR"})
end
end