Packages

Unofficial Nifcloud SDK for Elixir

Current section

Files

Jump to
ex_nifcloud lib ex_nifcloud.ex
Raw

lib/ex_nifcloud.ex

defmodule ExNifcloud do
@moduledoc File.read!("#{__DIR__}/../README.md")
use Application
@doc """
Perform an Nifcloud request
```
ExNifcloud.Computing.describe_instances |> ExNifcloud.request
ExNifcloud.Computing.describe_instances |> ExNifcloud.request(region: "jp-east-1")
```
```
op = %ExNifcloud.Operation.JSON{
http_method: :post,
service: :computing,
headers: [],
}
ExNifcloud.request(op)
```
"""
@spec request(ExNifcloud.Operation.t()) :: term
@spec request(ExNifcloud.Operation.t(), Keyword.t()) :: {:ok, term} | {:error, term}
def request(op, config_overrides \\ []) do
ExNifcloud.Operation.perform(op, ExNifcloud.Config.new(op.service, config_overrides))
end
@doc """
Perform an Nifcloud request, raise if it fails.
Same as `request/1,2` except it will either return the successful response from Nifcloud or raise an exception.
"""
@spec request!(ExNifcloud.Operation.t()) :: term | no_return
@spec request!(ExNifcloud.Operation.t(), Keyword.t()) :: term | no_return
def request!(op, config_overrides \\ []) do
case request(op, config_overrides) do
{:ok, result} ->
result
error ->
raise ExNifcloud.Error, """
ExNifcloud Request Error!
#{inspect(error)}
"""
end
end
end