Current section

Files

Jump to
bungee lib bungee request builder.ex
Raw

lib/bungee/request/builder.ex

defmodule Bungee.Request.Builder do
alias Bungee.Config
alias Bungee.Request.Builder.AddMethod
alias Bungee.Request.Builder.AddIndex
alias Bungee.Request.Builder.AddType
alias Bungee.Request.Builder.AddIdentifier
alias Bungee.Request.Builder.AddRequestOptions
alias Bungee.Request.Builder.AddDocument
alias Bungee.Request.Builder.AddSearchParameters
alias Bungee.Request.Builder.AddQuery
require Logger
@spec init(list(any()), Config.t()) :: nonempty_list(any())
def init(request, config = %Config{}) do
request
|> add_uri(config.uri)
|> add_json_content_type()
end
defp add_uri(request, uri) do
request
|> Keyword.put(
:url,
(fn uri ->
String.trim_trailing(uri, "/")
end).(uri)
)
end
defp add_json_content_type(request) do
Keyword.put(request, :headers, %{"Content-type" => "application/json"})
end
# Maybe we should __useing_ these in
def add_method(request, method), do: AddMethod.add_method(request, method)
def add_index(request, index), do: AddIndex.add_index(request, index)
def add_type(request, type), do: AddType.add_type(request, type)
def add_identifier(request, identifier), do: AddIdentifier.add_identifier(request, identifier)
def add_request_options(request, request_options),
do: AddRequestOptions.add_request_options(request, request_options)
def add_document(request, document), do: AddDocument.add_document(request, document)
def add_search_parameters(request, field, term),
do: AddSearchParameters.add_search_parameters(request, field, term)
def add_query(request, query), do: AddQuery.add_query(request, query)
end