| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Network.OAuth.OAuth2.Internal
Contents
Description
A simple OAuth2 Haskell binding. (This is supposed to be independent of the http client used.)
Synopsis
- data OAuth2 = OAuth2 {
- oauthClientId :: Text
- oauthClientSecret :: Maybe Text
- oauthOAuthorizeEndpoint :: URI
- oauthAccessTokenEndpoint :: URI
- oauthCallback :: Maybe URI
- newtype AccessToken = AccessToken {
- atoken :: Text
- newtype RefreshToken = RefreshToken {
- rtoken :: Text
- newtype IdToken = IdToken {
- idtoken :: Text
- newtype ExchangeToken = ExchangeToken {
- extoken :: Text
- data OAuth2Token = OAuth2Token {
- accessToken :: AccessToken
- refreshToken :: Maybe RefreshToken
- expiresIn :: Maybe Int
- tokenType :: Maybe Text
- idToken :: Maybe IdToken
- parseIntFlexible :: Value -> Parser Int
- data OAuth2Error a = OAuth2Error {
- error :: Either Text a
- errorDescription :: Maybe Text
- errorUri :: Maybe (URIRef Absolute)
- parseOAuth2Error :: FromJSON err => ByteString -> OAuth2Error err
- mkDecodeOAuth2Error :: ByteString -> String -> OAuth2Error err
- type OAuth2Result err a = Either (OAuth2Error err) a
- type PostBody = [(ByteString, ByteString)]
- type QueryParams = [(ByteString, ByteString)]
- authorizationUrl :: OAuth2 -> URI
- accessTokenUrl :: OAuth2 -> ExchangeToken -> (URI, PostBody)
- accessTokenUrl' :: OAuth2 -> ExchangeToken -> Maybe Text -> (URI, PostBody)
- refreshAccessTokenUrl :: OAuth2 -> RefreshToken -> (URI, PostBody)
- appendAccessToken :: URIRef a -> AccessToken -> URIRef a
- accessTokenToParam :: AccessToken -> [(ByteString, ByteString)]
- appendQueryParams :: [(ByteString, ByteString)] -> URIRef a -> URIRef a
- uriToRequest :: MonadThrow m => URI -> m Request
- requestToUri :: Request -> URI
- hostLens :: Lens' Request ByteString
- portLens :: Lens' Request Int
Data Types
Query Parameter Representation
Constructors
| OAuth2 | |
Fields
| |
newtype AccessToken Source #
Constructors
| AccessToken | |
Fields
| |
Instances
| Eq AccessToken Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
| Show AccessToken Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods showsPrec :: Int -> AccessToken -> ShowS show :: AccessToken -> String showList :: [AccessToken] -> ShowS | |
| FromJSON AccessToken Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
| ToJSON AccessToken Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods toJSON :: AccessToken -> Value toEncoding :: AccessToken -> Encoding toJSONList :: [AccessToken] -> Value toEncodingList :: [AccessToken] -> Encoding | |
| Binary AccessToken Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
newtype RefreshToken Source #
Constructors
| RefreshToken | |
Fields
| |
Instances
| Eq RefreshToken Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
| Show RefreshToken Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods showsPrec :: Int -> RefreshToken -> ShowS show :: RefreshToken -> String showList :: [RefreshToken] -> ShowS | |
| FromJSON RefreshToken Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
| ToJSON RefreshToken Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods toJSON :: RefreshToken -> Value toEncoding :: RefreshToken -> Encoding toJSONList :: [RefreshToken] -> Value toEncodingList :: [RefreshToken] -> Encoding | |
| Binary RefreshToken Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
Instances
| Eq IdToken Source # | |
| Show IdToken Source # | |
| FromJSON IdToken Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
| ToJSON IdToken Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods toEncoding :: IdToken -> Encoding toJSONList :: [IdToken] -> Value toEncodingList :: [IdToken] -> Encoding | |
| Binary IdToken Source # | |
newtype ExchangeToken Source #
Constructors
| ExchangeToken | |
Fields
| |
Instances
| Show ExchangeToken Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods showsPrec :: Int -> ExchangeToken -> ShowS show :: ExchangeToken -> String showList :: [ExchangeToken] -> ShowS | |
| FromJSON ExchangeToken Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
| ToJSON ExchangeToken Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods toJSON :: ExchangeToken -> Value toEncoding :: ExchangeToken -> Encoding toJSONList :: [ExchangeToken] -> Value toEncodingList :: [ExchangeToken] -> Encoding | |
data OAuth2Token Source #
The gained Access Token. Use Data.Aeson.decode to
decode string to AccessToken. The refreshToken is
special in some cases,
e.g. https://developers.google.com/accounts/docs/OAuth2
Constructors
| OAuth2Token | |
Fields
| |
Instances
| Eq OAuth2Token Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
| Show OAuth2Token Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods showsPrec :: Int -> OAuth2Token -> ShowS show :: OAuth2Token -> String showList :: [OAuth2Token] -> ShowS | |
| Generic OAuth2Token Source # | |
Defined in Network.OAuth.OAuth2.Internal Associated Types type Rep OAuth2Token :: Type -> Type | |
| FromJSON OAuth2Token Source # | Parse JSON data into |
Defined in Network.OAuth.OAuth2.Internal | |
| ToJSON OAuth2Token Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods toJSON :: OAuth2Token -> Value toEncoding :: OAuth2Token -> Encoding toJSONList :: [OAuth2Token] -> Value toEncodingList :: [OAuth2Token] -> Encoding | |
| Binary OAuth2Token Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
| type Rep OAuth2Token Source # | |
Defined in Network.OAuth.OAuth2.Internal type Rep OAuth2Token = D1 ('MetaData "OAuth2Token" "Network.OAuth.OAuth2.Internal" "hoauth2-1.14.0-BbtNyqU8pRm8I0Ub33v9ZH" 'False) (C1 ('MetaCons "OAuth2Token" 'PrefixI 'True) ((S1 ('MetaSel ('Just "accessToken") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AccessToken) :*: S1 ('MetaSel ('Just "refreshToken") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe RefreshToken))) :*: (S1 ('MetaSel ('Just "expiresIn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)) :*: (S1 ('MetaSel ('Just "tokenType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "idToken") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IdToken)))))) | |
parseIntFlexible :: Value -> Parser Int Source #
data OAuth2Error a Source #
Constructors
| OAuth2Error | |
Fields
| |
Instances
| Eq a => Eq (OAuth2Error a) Source # | |
Defined in Network.OAuth.OAuth2.Internal | |
| Show a => Show (OAuth2Error a) Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods showsPrec :: Int -> OAuth2Error a -> ShowS show :: OAuth2Error a -> String showList :: [OAuth2Error a] -> ShowS | |
| Generic (OAuth2Error a) Source # | |
Defined in Network.OAuth.OAuth2.Internal Associated Types type Rep (OAuth2Error a) :: Type -> Type | |
| FromJSON err => FromJSON (OAuth2Error err) Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods parseJSON :: Value -> Parser (OAuth2Error err) parseJSONList :: Value -> Parser [OAuth2Error err] | |
| ToJSON err => ToJSON (OAuth2Error err) Source # | |
Defined in Network.OAuth.OAuth2.Internal Methods toJSON :: OAuth2Error err -> Value toEncoding :: OAuth2Error err -> Encoding toJSONList :: [OAuth2Error err] -> Value toEncodingList :: [OAuth2Error err] -> Encoding | |
| type Rep (OAuth2Error a) Source # | |
Defined in Network.OAuth.OAuth2.Internal type Rep (OAuth2Error a) = D1 ('MetaData "OAuth2Error" "Network.OAuth.OAuth2.Internal" "hoauth2-1.14.0-BbtNyqU8pRm8I0Ub33v9ZH" 'False) (C1 ('MetaCons "OAuth2Error" 'PrefixI 'True) (S1 ('MetaSel ('Just "error") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either Text a)) :*: (S1 ('MetaSel ('Just "errorDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "errorUri") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (URIRef Absolute)))))) | |
parseOAuth2Error :: FromJSON err => ByteString -> OAuth2Error err Source #
mkDecodeOAuth2Error :: ByteString -> String -> OAuth2Error err Source #
Types Synonym
type OAuth2Result err a = Either (OAuth2Error err) a Source #
Is either Left containing an error or Right containg a result
type QueryParams = [(ByteString, ByteString)] Source #
URLs
authorizationUrl :: OAuth2 -> URI Source #
Prepare the authorization URL. Redirect to this URL asking for user interactive authentication.
Arguments
| :: OAuth2 | |
| -> ExchangeToken | access code gained via authorization URL |
| -> (URI, PostBody) | access token request URL plus the request body. |
Prepare the URL and the request body query for fetching an access token.
Arguments
| :: OAuth2 | |
| -> ExchangeToken | access code gained via authorization URL |
| -> Maybe Text | Grant Type |
| -> (URI, PostBody) | access token request URL plus the request body. |
Prepare the URL and the request body query for fetching an access token, with optional grant type.
refreshAccessTokenUrl Source #
Arguments
| :: OAuth2 | |
| -> RefreshToken | 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.
Arguments
| :: URIRef a | Base URI |
| -> AccessToken | Authorized Access Token |
| -> URIRef a | Combined Result |
For GET method API.
accessTokenToParam :: AccessToken -> [(ByteString, ByteString)] Source #
Create QueryParams with given access token value.
appendQueryParams :: [(ByteString, ByteString)] -> URIRef a -> URIRef a Source #
uriToRequest :: MonadThrow m => URI -> m Request Source #
requestToUri :: Request -> URI Source #