Safe Haskell | None |
---|---|
Language | Haskell2010 |
A simple OAuth2 Haskell binding. (This is supposed to be independent with http client.)
- data OAuth2 = OAuth2 {}
- data AccessToken = AccessToken {}
- type OAuth2Result a = Either ByteString a
- type QueryParams = [(ByteString, ByteString)]
- type PostBody = [(ByteString, ByteString)]
- type URI = ByteString
- authorizationUrl :: OAuth2 -> URI
- accessTokenUrl :: OAuth2 -> ByteString -> (URI, PostBody)
- accessTokenUrl' :: OAuth2 -> ByteString -> Maybe ByteString -> (URI, PostBody)
- refreshAccessTokenUrl :: OAuth2 -> ByteString -> (URI, PostBody)
- appendQueryParam :: URI -> QueryParams -> URI
- appendAccessToken :: URI -> AccessToken -> URI
- accessTokenToParam :: AccessToken -> QueryParams
- transform' :: [(a, Maybe b)] -> [(a, b)]
Data Types
Query Parameter Representation
data AccessToken Source
The gained Access Token. Use Data.Aeson.decode
to decode string to AccessToken
.
The refresheToken
is special at some case.
e.g. https://developers.google.com/accounts/docs/OAuth2
Show AccessToken | |
FromJSON AccessToken | Parse JSON data into {AccessToken} |
Types Synonym
type OAuth2Result a = Either ByteString a Source
type QueryParams = [(ByteString, ByteString)] Source
type synonym of query parameters
type PostBody = [(ByteString, ByteString)] Source
type synonym of post body content
type URI = ByteString Source
type synonym of a URI
URLs
authorizationUrl :: OAuth2 -> URI Source
Prepare the authorization URL. Redirect to this URL asking for user interactive authentication.
:: OAuth2 | |
-> ByteString | access code gained via authorization URL |
-> (URI, PostBody) | access token request URL plus the request body. |
Prepare URL and the request body query for fetching access token.
:: OAuth2 | |
-> ByteString | access code gained via authorization URL |
-> Maybe ByteString | Grant Type |
-> (URI, PostBody) | access token request URL plus the request body. |
:: OAuth2 | |
-> ByteString | refresh token gained via authorization URL |
-> (URI, PostBody) | refresh token request URL plus the request body. |
Using a Refresh Token. obtain a new access token by sending a refresh token to the Authorization server.
UTILs
appendQueryParam :: URI -> QueryParams -> URI Source
Append query parameters with ?
:: URI | Base URI |
-> AccessToken | Authorized Access Token |
-> URI | Combined Result |
accessTokenToParam :: AccessToken -> QueryParams Source
Create QueryParams with given access token value.
accessTokenToParam :: BS.ByteString -> QueryParams accessTokenToParam token = [("access_token", token)]
transform' :: [(a, Maybe b)] -> [(a, b)] Source
lift value in the Maybe and abonda Nothing