glow_auth/token_request/request_builder

Request Builders for building up token requests

TODO: Rename to TokenRequestBuilder?

Some requirements: - MAY have query component - MUST NOT have fragment component - MUST use TLS - MUST be “POST” - Params without value MUST be same as omission - No repeat params - scope space-delimited case insensitive strings defined by auth server - MAY full or partly ignore - If different, MUST include scope in response - A default must be defined

Types

pub type RequestBuilder(body) {
  RequestBuilder(request: Request(body), params: Params)
}

Constructors

  • RequestBuilder(request: Request(body), params: Params)

Functions

pub fn from_request(request: Request(a)) -> RequestBuilder(a)

Constructor: from request

pub fn from_uri(uri: Uri) -> RequestBuilder(String)

Convert a Uri to a RequestBuilder

Note that Request requires a schema and host, but uri doesn’t, so here:

  • If you don’t specify a scheme, https is assumed
  • If you don’t specify a host, localhost is assumed
pub fn map_request(rb: RequestBuilder(a), f: fn(Request(a)) ->
    Request(b)) -> RequestBuilder(b)
pub fn put_param(rb: RequestBuilder(a), key: String, value: String) -> RequestBuilder(
  a,
)
pub fn set_params(rb: RequestBuilder(a), params: Params) -> RequestBuilder(
  a,
)
pub fn to_token_request(rb: RequestBuilder(a)) -> Request(String)

Access Tokens are requested by form encoded values in the body, while the server returns json.

Some flows allow a GET request where the request query-encodes into the uri.

This function handles both depending on the request.method.