Current section

Files

Jump to
openstack lib swift.ex
Raw

lib/swift.ex

defmodule Openstack.Swift do
import Maybe
def request(token, region, method, path, params, body \\ "") do
Openstack.request(token, region, "object-store", method, path, body, Dict.merge(params, format: "json"))
end
def bucket_list(token, region, params \\ []) do
request(token, region, :get, "/", params)
end
def bucket_show(token, region, id, params \\ []) do
request(token, region, :get, "/" <> id, params)
end
def bucket_create(token, region, params \\ %{}) do
case params do
%{name: name} ->
request(token, region, :put, "/" <> name, params)
_ -> {:error, "name is required"}
end
end
def bucket_delete(token, region, id, params \\ %{}) do
request(token, region, :delete, "/" <> id, params)
end
def bucket_info(token, region, id, params \\ %{}) do
Openstack.request!(token, region, "object-store", :head, "/" <> id, "", params)
|> ok(fn (%{headers: headers, status_code: _}) ->
headers
|> Enum.filter(fn({key, _})-> String.starts_with?(key , "X") end)
|> Enum.into(%{})
end)
end
def bucket_upload(token, region, path, file, params \\ %{}) do
File.read(Path.expand(file))
|> ok(fn(file)-> Openstack.request!(token, region, "object-store", :put, "/" <> path, file, params) end)
|> ok(fn(%{headers: headers})-> Enum.into(headers, %{}) end)
end
def object_delete(token, region, path, params \\ %{}) do
request(token, region, :delete, "/" <> path, params)
end
end