Current section

Files

Jump to
scaleway lib scaleway image.ex
Raw

lib/scaleway/image.ex

defmodule Scaleway.Image do
import Scaleway, only: [get: 1, post: 2, put: 2, delete: 1, format_answer: 1, extract_body: 1]
@endpoint "/images"
@doc """
Create a new image.
"""
@spec create(map()) :: {:ok, HTTPoison.Response} | {:error, HTTPoison.Error}
def create(data) do
post(@endpoint, data)
end
@spec create!(map()) :: map()
def create!(data) do
create(data)
|> format_answer
|> extract_body
end
@doc """
List all images.
"""
@spec list() :: {:ok, HTTPoison.Response} | {:error, HTTPoison.Error}
def list() do
get(@endpoint)
end
@doc """
Similar to list/0 but with body only.
"""
@spec list!() :: map()
def list!() do
list()
|> format_answer
|> extract_body
end
@doc """
Retrieves an image by its id.
"""
@spec show(charlist()) :: {:ok, HTTPoison.Response} | {:error, HTTPoison.Error}
def show(id) do
get("#{@endpoint}/#{id}")
end
@spec show!(charlist()) :: map()
def show!(id) do
show(id)
|> format_answer
|> extract_body
end
@doc """
Update an image
"""
@spec update(charlist(), map()) :: {:ok, HTTPoison.Response} | {:error, HTTPoison.Error}
def update(id, data) do
put("#{@endpoint}/#{id}", data)
end
@spec update!(charlist(), map()) :: map()
def update!(id, data) do
update(id, data)
|> format_answer
|> extract_body
end
@doc """
Delete an image by its id.
"""
@spec remove(charlist()) :: {:ok, HTTPoison.Response} | {:error, HTTPoison.Error}
def remove(id) do
delete("#{@endpoint}/#{id}")
end
@spec remove!(charlist()) :: map()
def remove!(id) do
remove(id)
|> format_answer
|> extract_body
end
end