HTTPoison.Base behaviour (HTTPoison v1.8.0) View Source

Provides a default implementation for HTTPoison functions.

This module is meant to be use'd in custom modules in order to wrap the functionalities provided by HTTPoison. For example, this is very useful to build API clients around HTTPoison:

defmodule GitHub do
  use HTTPoison.Base

  @endpoint "https://api.github.com"

  def process_url(url) do
    @endpoint <> url
  end
end

The example above shows how the GitHub module can wrap HTTPoison functionalities to work with the GitHub API in particular; this way, for example, all requests done through the GitHub module will be done to the GitHub API:

GitHub.get("/users/octocat/orgs")
#=> will issue a GET request at https://api.github.com/users/octocat/orgs

Overriding functions

HTTPoison.Base defines the following list of functions, all of which can be overridden (by redefining them). The following list also shows the typespecs for these functions and a short description.

# Called in order to process the url passed to any request method before
# actually issuing the request.
@spec process_url(binary) :: binary
def process_url(url)

# Called to arbitrarily process the request body before sending it with the
# request.
@spec process_request_body(term) :: binary
def process_request_body(body)

# Called to arbitrarily process the request headers before sending them
# with the request.
@spec process_request_headers(term) :: [{binary, term}]
def process_request_headers(headers)

# Called to arbitrarily process the request options before sending them
# with the request.
@spec process_request_options(keyword) :: keyword
def process_request_options(options)

# Called before returning the response body returned by a request to the
# caller.
@spec process_response_body(binary) :: term
def process_response_body(body)

# Used when an async request is made; it's called on each chunk that gets
# streamed before returning it to the streaming destination.
@spec process_response_chunk(binary) :: term
def process_response_chunk(chunk)

# Called to process the response headers before returning them to the
# caller.
@spec process_headers([{binary, term}]) :: term
def process_headers(headers)

# Used to arbitrarily process the status code of a response before
# returning it to the caller.
@spec process_response_status_code(integer) :: term
def process_response_status_code(status_code)

Link to this section Summary

Callbacks

Link to this section Types

Link to this section Callbacks

Specs

Specs

Link to this callback

delete(url, headers, options)

View Source

Specs

Specs

Specs

Link to this callback

delete!(url, headers, options)

View Source

Specs

Specs

Specs

Link to this callback

get(url, headers, options)

View Source

Specs

Specs

Specs

Link to this callback

get!(url, headers, options)

View Source

Specs

Specs

Specs

Link to this callback

head(url, headers, options)

View Source

Specs

Specs

Specs

Link to this callback

head!(url, headers, options)

View Source

Specs

Specs

Specs

Link to this callback

options(url, headers, options)

View Source

Specs

Specs

Specs

Link to this callback

options!(url, headers, options)

View Source

Specs

Specs

Link to this callback

patch(url, body, headers)

View Source

Specs

Link to this callback

patch(url, body, headers, options)

View Source

Specs

Specs

Link to this callback

patch!(url, body, headers)

View Source

Specs

Link to this callback

patch!(url, body, headers, options)

View Source

Specs

Specs

Link to this callback

post(url, body, headers)

View Source

Specs

Link to this callback

post(url, body, headers, options)

View Source

Specs

Specs

Link to this callback

post!(url, body, headers)

View Source

Specs

Link to this callback

post!(url, body, headers, options)

View Source

Specs

Specs

process_headers(list()) :: term()
Link to this callback

process_request_body(body)

View Source

Specs

process_request_body(body()) :: body()
Link to this callback

process_request_headers(headers)

View Source

Specs

process_request_headers(headers()) :: headers()
Link to this callback

process_request_options(options)

View Source

Specs

process_request_options(options()) :: options()
Link to this callback

process_request_params(params)

View Source

Specs

process_request_params(params()) :: params()
Link to this callback

process_request_url(url)

View Source

Specs

process_request_url(url()) :: url()
Link to this callback

process_response(response)

View Source

Specs

process_response(response()) :: term()
Link to this callback

process_response_body(binary)

View Source

Specs

process_response_body(binary()) :: term()
Link to this callback

process_response_chunk(binary)

View Source

Specs

process_response_chunk(binary()) :: term()
Link to this callback

process_response_headers(list)

View Source

Specs

process_response_headers(list()) :: term()
Link to this callback

process_response_status_code(integer)

View Source

Specs

process_response_status_code(integer()) :: term()
Link to this callback

process_status_code(integer)

View Source

Specs

process_status_code(integer()) :: term()

Specs

process_url(url()) :: url()

Specs

Specs

Specs

Link to this callback

put(url, body, headers, options)

View Source

Specs

Specs

Specs

Link to this callback

put!(url, body, headers)

View Source

Specs

Link to this callback

put!(url, body, headers, options)

View Source

Specs

Specs

Specs

Link to this callback

request(method, url, body)

View Source

Specs

Link to this callback

request(method, url, body, headers)

View Source

Specs

Link to this callback

request(method, url, body, headers, options)

View Source

Specs

Specs

Link to this callback

request!(method, url, body)

View Source

Specs

Link to this callback

request!(method, url, body, headers)

View Source

Specs

Link to this callback

request!(method, url, body, headers, options)

View Source

Specs

Specs

start() :: {:ok, [atom()]} | {:error, term()}

Specs

stream_next(HTTPoison.AsyncResponse.t()) ::
  {:ok, HTTPoison.AsyncResponse.t()} | {:error, HTTPoison.Error.t()}