aleph.http.client-middleware

This middleware is adapted from clj-http, whose license is amenable to this sort of
copy/pastery

accept-encoding-value

(accept-encoding-value accept-encoding)

basic-auth-value

(basic-auth-value basic-auth)
Accept a String of the form "username:password" or a vector of 2 strings [username password], return a String with the basic auth header (see https://tools.ietf.org/html/rfc2617#page-5)

client-error?

(client-error? {:keys [status]})

coerce-clojure-body

(coerce-clojure-body request {:keys [body], :as resp})

coerce-form-params

multimethod

coerce-json-body

(coerce-json-body {:keys [coerce], :as req} {:keys [body status], :as resp} keyword? strict? & [charset])

coerce-response-body

multimethod

coerce-transit-body

(coerce-transit-body {:keys [transit-opts], :as request} {:keys [body], :as resp} type)

conflict?

(conflict? {:keys [status]})

content-type-value

(content-type-value type)

CookieSpec

protocol

Implement rules for accepting and returning cookies

members

write-cookies

(write-cookies this cookies)

CookieStore

protocol

members

add-cookies!

(add-cookies! this cookies)

get-cookies

(get-cookies this)

default-middleware

detect-charset

(detect-charset content-type)
Given a charset header, detect the charset, returns UTF-8 if not found.

enrich-with-current-time

(enrich-with-current-time cookies)

extract-cookies-from-response-headers

(extract-cookies-from-response-headers headers)(extract-cookies-from-response-headers cookie-spec headers)

follow-redirect

(follow-redirect client {:keys [uri url scheme server-name server-port trace-redirects], :or {trace-redirects []}, :as req} {:keys [body], :as rsp})
Attempts to follow the redirects from the "location" header, if no such
header exists (bad server!), returns the response without following the
request.

generate-query-string

(generate-query-string params & [content-type multi-param-style])

generate-query-string-with-encoding

(generate-query-string-with-encoding params encoding)(generate-query-string-with-encoding params encoding multi-param-style)

handle-cookies

(handle-cookies {:keys [cookie-store cookie-spec], :or {cookie-spec default-cookie-spec}} {:keys [headers], :as rsp})

handle-redirects

(handle-redirects client {:keys [request-method max-redirects redirects-count trace-redirects url], :or {redirects-count 0, max-redirects 20}, :as req} {:keys [status], :as rsp})
Middleware that follows redirects in the response. A slingshot exception is
thrown if too many redirects occur. Options
:follow-redirects - default:true, whether to follow redirects
:max-redirects - default:20, maximum number of redirects to follow
:force-redirects - default:false, force redirecting methods to GET requests

In the response:
:redirects-count - number of redirects
:trace-redirects - vector of sites the request was redirected from

handle-response-debug

(handle-response-debug req rsp)

json-decode

dynamic

(json-decode & args)
Resolve and apply cheshire's json decoding dynamically.

json-decode-strict

dynamic

(json-decode-strict & args)
Resolve and apply cheshire's json decoding dynamically (with lazy parsing
disabled).

json-enabled?

json-encode

dynamic

(json-encode & args)
Resolve and apply cheshire's json encoding dynamically.

merge-cookies

(merge-cookies stored-cookies new-cookies)

missing?

(missing? {:keys [status]})

multi-param-suffix

(multi-param-suffix index multi-param-style)

opt

(opt req param)
Check the request parameters for a keyword  boolean option, with or without
the ?

Returns false if either of the values are false, or the value of
(or key1 key2) otherwise (truthy)

parse-content-type

(parse-content-type s)
Parse `s` as an RFC 2616 media type.

parse-transit

dynamic

(parse-transit in type & [opts])
Resolve and apply Transit's JSON/MessagePack decoding.

parse-url

(parse-url url)
Parse a URL string into a map of interesting parts.

parse-user-info

(parse-user-info user-info)

redirect?

(redirect? {:keys [status]})

req->cookie-origin

(req->cookie-origin {:keys [url], :as req})

server-error?

(server-error? {:keys [status]})

success?

(success? {:keys [status]})

transit-enabled?

transit-encode

dynamic

(transit-encode out type & [opts])
Resolve and apply Transit's JSON/MessagePack encoding.

unexceptional-status?

url-encode

(url-encode s)(url-encode s encoding)

url-encode-illegal-characters

(url-encode-illegal-characters path-or-query)
Takes a raw url path or query and url-encodes any illegal characters.
Minimizes ambiguity by encoding space to %20.

when-pos

(when-pos v)

wrap-accept

(wrap-accept {:keys [accept], :as req})
Middleware converting the :accept key in a request to application/<type>

wrap-accept-encoding

(wrap-accept-encoding {:keys [accept-encoding], :as req})
Middleware converting the :accept-encoding option to an acceptable
Accept-Encoding header in the request.

wrap-basic-auth

(wrap-basic-auth req)
Middleware converting the :basic-auth option into an Authorization header.

wrap-content-type

(wrap-content-type {:keys [content-type character-encoding], :as req})
Middleware converting a `:content-type <keyword>` option to the formal
application/<name> format and adding it as a header.

wrap-cookies

(wrap-cookies {:keys [cookie-store cookie-spec cookies], :or {cookie-spec default-cookie-spec, cookies (quote ())}, :as req})
Middleware that set 'Cookie' header based on the content of cookies passed
with the request or from cookies storage (when provided). Source for 'Cookie'
header content by priorities:

* 'Cookie' header (already set)
* non-empty `:cookies`
* non-nil `:cookie-store`

Each cookie should be represented as a map:

|:---|:---
| `name` | name of this cookie
| `value` | value of this cookie
| `domain` | specifies allowed hosts to receive the cookie (including subdomains)
| `path` | indicates a URL path that must exist in the requested URL in order to send the 'Cookie' header
| `http-only?` | when set to `true`, cookie can only be accessed by HTTP. Optional, defaults to `false`
| `secure?` | when set to `true`, cookie can only be transmitted over an encrypted connection. Optional, defaults to `false`
| `max-age` | set maximum age of this cookie in seconds. Options, defaults to `io.netty.handler.codec.http.cookie.Cookie/UNDEFINED_MAX_AGE`.

wrap-exceptions

(wrap-exceptions client)
Middleware that throws response as an ExceptionInfo if the response has
unsuccessful status code. :throw-exceptions set to false in the request
disables this middleware.

wrap-form-params

(wrap-form-params {:keys [form-params content-type request-method], :or {content-type :x-www-form-urlencoded}, :as req})
Middleware wrapping the submission or form parameters.

wrap-method

(wrap-method req)
Middleware converting the :method option into the :request-method option

wrap-nested-params

(wrap-nested-params {:keys [content-type flatten-nested-keys], :as req})
Middleware wrapping nested parameters for query strings.

wrap-oauth

(wrap-oauth req)
Middleware converting the :oauth-token option into an Authorization header.

wrap-query-params

(wrap-query-params {:keys [query-params content-type multi-param-style], :or {content-type :x-www-form-urlencoded, multi-param-style :default}, :as req})
Middleware converting the :query-params option to a querystring on
the request.

wrap-request

(wrap-request client)
Returns a batteries-included HTTP request function corresponding to the given
core client. See default-middleware for the middleware wrappers that are used
by default

wrap-request-debug

(wrap-request-debug req)

wrap-request-timing

(wrap-request-timing client)
Middleware that times the request, putting the total time (in milliseconds)
of the request into the :request-time key in the response.

wrap-url

(wrap-url req)
Middleware wrapping request URL parsing.

wrap-user-info

(wrap-user-info req)
Middleware converting the :user-info option into a :basic-auth option