Packages

Elixir Azure Storage REST Client support Blob, Queue, Fileshare and TableStorage service

Current section

Files

Jump to
ex_azure_storage lib azure_storage request.ex
Raw

lib/azure_storage/request.ex

defmodule AzureStorage.Request do
require Logger
alias AzureStorage.Request.{Context, SharedKey, Schema}
alias Http.Client
import AzureStorage.Parser
def build(%Context{} = context, config \\ []), do: Context.build(context, config)
def request(%Context{method: method, url: url, body: body} = context, options \\ []) do
{:ok, opts} = NimbleOptions.validate(options, Schema.request_options())
headers = context |> SharedKey.sign_request()
Client.request(method, url, body, headers, options)
|> parse_response(opts[:response_body])
end
@doc false
def encode_query(options \\ []), do: URI.encode_query(options)
defp parse_response(response, :json), do: parse_response_body_as_json(response)
defp parse_response({:ok, %{body: body, headers: headers}}, _), do: {:ok, body, headers}
end