GSS.Client (elixir_google_spreadsheets v0.3.2)

Model of Client abstraction This process is a Producer for this GenStage pipeline.

Link to this section Summary

Functions

Read config settings scoped for GSS client.

Divide request into to partitions :read and :write

Adds an event to the queue

Gives events for the next stage to process when requested

Callback implementation for GenStage.init/1.

Issues an HTTP request with the given method to the given url.

Starts a task with request that must be awaited on.

Link to this section Types

Specs

event() :: {:request, GenStage.from(), GSS.Client.RequestParams.t()}

Specs

partition() :: :write | :read

Link to this section Functions

Link to this function

config(key, default \\ nil)

Specs

config(atom(), any()) :: any()

Read config settings scoped for GSS client.

Link to this function

dispatcher_hash(event)

Specs

dispatcher_hash(event()) :: {event(), partition()}

Divide request into to partitions :read and :write

Link to this function

handle_call(arg, from, queue)

Adds an event to the queue

Link to this function

handle_demand(demand, queue)

Gives events for the next stage to process when requested

Callback implementation for GenStage.init/1.

Link to this function

request(method, url, body \\ "", headers \\ [], options \\ [])

Specs

request(atom(), binary(), HTTPoison.body(), HTTPoison.headers(), Keyword.t()) ::
  {:ok, HTTPoison.Response.t()} | {:error, binary()} | no_return()

Issues an HTTP request with the given method to the given url.

This function is usually used indirectly by get/3, post/4, put/4, etc

Args:

  • method - HTTP method as an atom (:get, :head, :post, :put, :delete, etc.)
  • url - target url as a binary string or char list
  • body - request body. See more below
  • headers - HTTP headers as an orddict (e.g., [{"Accept", "application/json"}])
  • options - Keyword list of options

Body:

  • binary, char list or an iolist
  • {:form, [{K, V}, ...]} - send a form url encoded
  • {:file, ~s(/path/to/file)} - send a file
  • {:stream, enumerable} - lazily send a stream of binaries/charlists

Options:

  • :result_timeout - receive result timeout, in milliseconds. Default is 2 minutes
  • :timeout - timeout to establish a connection, in milliseconds. Default is 8000
  • :recv_timeout - timeout used when receiving a connection. Default is 5000
  • :proxy - a proxy to be used for the request; it can be a regular url or a {Host, Port} tuple
  • :proxy_auth - proxy authentication {User, Password} tuple
  • :ssl - SSL options supported by the ssl erlang module
  • :follow_redirect - a boolean that causes redirects to be followed
  • :max_redirect - an integer denoting the maximum number of redirects to follow
  • :params - an enumerable consisting of two-item tuples that will be appended to the url as query string parameters

Timeouts can be an integer or :infinity

This function returns {:ok, response} or {:ok, async_response} if the request is successful, {:error, reason} otherwise.

Examples

request(:post, ~s(https://my.website.com), ~s({\"foo\": 3}), [{"Accept", "application/json"}])

Link to this function

request_async(method, url, body \\ "", headers \\ [], options \\ [])

Specs

request_async(
  atom(),
  binary(),
  HTTPoison.body(),
  HTTPoison.headers(),
  Keyword.t()
) :: Task.t()

Starts a task with request that must be awaited on.

Link to this function

start_link(args \\ [])

Specs

start_link(any()) :: GenServer.on_start()