Packages

Quickly create API clients using module attributes.

Current section

Files

Jump to
exrequester lib httpotion_request_performer.ex
Raw

lib/httpotion_request_performer.ex

defmodule EXRequester.Performer.HTTPotion do
@moduledoc """
Implements `EXRequester.Performer` behaviour. Performs an HTTP request using HTTPotion
"""
@behaviour EXRequester.Performer
alias EXRequester.Request
alias EXRequester.Response
@log_request Application.get_env(:exrequester, :log_requests, false)
def do_request(request, params) do
if @log_request, do: EXRequester.Logger.log_request(request, params)
HTTPotion.start()
response = HTTPotion.request(
request.method,
Request.prepared_url(request, params),
headers: Request.prepared_headers(request, params),
body: Request.prepared_body(request)
)
|> Response.parse
if @log_request, do: EXRequester.Logger.log_response(response)
response
end
end