Copyright | Copyright (c) 2015, Michael Alan Dorman |
---|---|
License | MIT |
Maintainer | mdorman@jaunder.io |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
- data BuilderState = BuilderState {
- bsRequest :: Request
- bsQueryParam :: [(ByteString, Maybe ByteString)]
- bsDb :: ByteString
- bsPathSegments :: [ByteString]
- type RequestBuilder = StateT BuilderState (Reader Context)
- runBuilder :: RequestBuilder () -> Context -> Request
- finalize :: BuilderState -> Request
- defaultRequest :: RequestBuilder ()
- selectDb :: RequestBuilder ()
- setAuth :: RequestBuilder ()
- setConnection :: RequestBuilder ()
- setCookieJar :: RequestBuilder ()
- addHeaders :: RequestHeaders -> RequestBuilder ()
- defaultHeaders :: RequestHeaders -> RequestBuilder ()
- setHeaders :: RequestHeaders -> RequestBuilder ()
- addQueryParam :: [(ByteString, Maybe ByteString)] -> RequestBuilder ()
- defaultQueryParam :: [(ByteString, Maybe ByteString)] -> RequestBuilder ()
- setQueryParam :: [(ByteString, Maybe ByteString)] -> RequestBuilder ()
- addPath :: ByteString -> RequestBuilder ()
- selectDoc :: DocId -> RequestBuilder ()
- addRev :: DocRev -> RequestBuilder ()
- maybeAddRev :: Maybe DocRev -> RequestBuilder ()
- setJsonBody :: ToJSON a => a -> RequestBuilder ()
- setMethod :: ByteString -> RequestBuilder ()
Documentation
data BuilderState Source
The state of our request as it's being built
BuilderState | |
|
type RequestBuilder = StateT BuilderState (Reader Context) Source
A type synonym for our builder monad
runBuilder :: RequestBuilder () -> Context -> Request Source
finalize :: BuilderState -> Request Source
This actually takes the BuilderState
and does the assembly of the various state bits into a single Request
.
defaultRequest :: RequestBuilder () Source
The default set of modifications applied to the request.
- The host/port connection information is set
- The
Accept
header is set to 'application/json' - The 'Content-Type' headers is set to 'application/json'
- Any authentication session in the cookie jar is set
- Any Basic Authentication information is applied
Any or all of these may be overridden, but probably shouldn't be.
Applying Context
to the Request
selectDb :: RequestBuilder () Source
setAuth :: RequestBuilder () Source
setCookieJar :: RequestBuilder () Source
Setting Headers
addHeaders :: RequestHeaders -> RequestBuilder () Source
Add headers to a Request
, leaving existing instances undisturbed.
defaultHeaders :: RequestHeaders -> RequestBuilder () Source
Add headers to a Request
, if they aren't already present.
setHeaders :: RequestHeaders -> RequestBuilder () Source
Set headers on the Request
, overriding any existing instances.
Setting Query Parameters
addQueryParam :: [(ByteString, Maybe ByteString)] -> RequestBuilder () Source
Add query parameters to a Request
, leaving existing parameters undisturbed.
defaultQueryParam :: [(ByteString, Maybe ByteString)] -> RequestBuilder () Source
Add query parameters to a Request
, if they aren't already present
setQueryParam :: [(ByteString, Maybe ByteString)] -> RequestBuilder () Source
Set query parameters on the Request
, overriding any existing instances.
Setting the document path
addPath :: ByteString -> RequestBuilder () Source
Add a path segment to the Request
. This is only appropriate for static paths.
Handling optional revision information
addRev :: DocRev -> RequestBuilder () Source
Set the rev for the Request
.
maybeAddRev :: Maybe DocRev -> RequestBuilder () Source
Set the rev for the Request
if you have it.
Miscellaneous request options
:: ToJSON a | |
=> a | The document content |
-> RequestBuilder () |
Set the body of the request to the encoded JSON value
setMethod :: ByteString -> RequestBuilder () Source
Set the method for the Request
.