úÎH,BZo      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnNone5Token Error Responses /https://tools.ietf.org/html/rfc6749#section-5.2  None5IL !type synonym of post body content Is either o containing an error or p containg a resultThe gained Access Token. Use Data.Aeson.decode to decode string to  AccessToken. The  refreshToken" is special in some cases, e.g. 2https://developers.google.com/accounts/docs/OAuth2'Query Parameter Representation/aPrepare the authorization URL. Redirect to this URL asking for user interactive authentication.0HPrepare the URL and the request body query for fetching an access token.1cPrepare the URL and the request body query for fetching an access token, with optional grant type.2jUsing a Refresh Token. Obtain a new access token by sending a refresh token to the Authorization server.3For GET method API.4Create   with given access token value.=Parse JSON data into 2  !"#$%&'()*+,-./0(access code gained via authorization URL/access token request URL plus the request body.1(access code gained via authorization URL Grant Type/access token request URL plus the request body.2*refresh token gained via authorization URL0refresh token request URL plus the request body.3Base URIAuthorized Access TokenCombined Result456789:;<=.  !"#$%&'()*+,-./01234567892'()*+,-$%&!"# =<;:. /0123456789  !"#$%&'()*+,-./0123456789:;<=None:Q)Request (via POST method) "OAuth2 Token".RoRequest a new AccessToken with the Refresh Token. TODO: seems more approporate to rename to refreshAccessTokenS1Conduct post request and return response as JSON.TAConduct post request and return response as JSON or Query String.UConduct post request.V>Conduct an authorized GET request and return response as JSON.W"Conduct an authorized GET request.Xsame to W; but set access token to query parameter rather than headerY1Conduct POST request and return response as JSON.ZConduct POST request.[HConduct POST request with access token in the request body rather header\ZSend an HTTP request including the Authorization header with the specified access token.] Parses a Response to to  OAuth2Result^ Parses a OAuth2Result BSL.ByteString into FromJSON a => aq Parses a OAuth2Result BSL.ByteString* that contains not JSON but a Query String_Try ^ and q`0Set several header values: + userAgennt : hoauth2 + accept : `application/json` + authorization : Bearer xxxxx if $ provided.aSet the HTTP method to use.QHTTP connection manager OAuth DataOAuth 2 Tokens Access TokenRHTTP connection manager. OAuth context(refresh token gained after authorizationSHTTP connection manager. OAuth optionsThe URL request bodyResponse as JSONTHTTP connection manager. OAuth optionsThe URL request bodyResponse as ByteStringUHTTP connection manager. OAuth optionsURL Request body.Response as ByteStringVHTTP connection manager.Response as JSONWHTTP connection manager.Response as ByteStringXHTTP connection manager.Response as ByteStringYHTTP connection manager.Response as JSONZHTTP connection manager.Response as ByteString[HTTP connection manager.Response as ByteString\Request to performModify request before sendingHTTP connection manager.]^q_`aQRSTUVWXYZ[\]^_`aQRSTUVWXYZ[\]^_`aQRSTUVWXYZ[\]^q_`aNone5b)Authorization Code Grant Error Responses  3https://tools.ietf.org/html/rfc6749#section-4.1.2.1! Implicit Grant Error Responses 3https://tools.ietf.org/html/rfc6749#section-4.2.2.1 bcdefghijkbecdgfhi kjbcdefghibcdefghijk OAuth2 client(c) 2012 Haisheng Wu BSD-style (see the file LICENSE)Haisheng Wu <freizl@gmail.com>alphaportableNone?  !"#$%&'()*+,-./0123456789QRSTUVWXYZ[\]^_`ar      !!"##$%%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` ab cd efgefhij$hoauth2-1.4.0-IDkKIlPn57RDnLEInJs90E!Network.OAuth.OAuth2.TokenRequestNetwork.OAuth.OAuth2.InternalNetwork.OAuth.OAuth2.HttpClient)Network.OAuth.OAuth2.AuthorizationRequestNetwork.OAuth.OAuth2ErrorsInvalidRequest InvalidClient InvalidGrantUnauthorizedClientUnsupportedGrantType InvalidScope$fToJSONErrors$fFromJSONErrors $fShowErrors $fEqErrors$fGenericErrors QueryParamsPostBody OAuth2Result OAuth2ErrorerrorerrorDescriptionerrorUri OAuth2Token accessToken refreshToken expiresIn tokenTypeidToken ExchangeTokenextokenIdTokenidtoken RefreshTokenrtoken AccessTokenatokenOAuth2 oauthClientIdoauthClientSecretoauthOAuthorizeEndpointoauthAccessTokenEndpoint oauthCallbackparseOAuth2ErrorauthorizationUrlaccessTokenUrlaccessTokenUrl'refreshAccessTokenUrlappendAccessTokenaccessTokenToParamappendQueryParams uriToRequest requestToUrihostLensportLens$fToJSONOAuth2Error$fFromJSONOAuth2Error$fToJSONOAuth2Token$fFromJSONOAuth2Token $fShowOAuth2 $fEqOAuth2$fShowAccessToken$fFromJSONAccessToken$fToJSONAccessToken$fShowRefreshToken$fFromJSONRefreshToken$fToJSONRefreshToken $fShowIdToken$fFromJSONIdToken$fToJSONIdToken$fShowExchangeToken$fFromJSONExchangeToken$fToJSONExchangeToken$fShowOAuth2Token$fGenericOAuth2Token$fShowOAuth2Error$fEqOAuth2Error$fGenericOAuth2ErrorfetchAccessTokenfetchRefreshTokendoJSONPostRequestdoFlexiblePostRequestdoSimplePostRequest authGetJSON authGetBS authGetBS' authPostJSON authPostBS authPostBS' authRequesthandleResponseparseResponseJSONparseResponseFlexibleupdateRequestHeaders setMethod AccessDeniedUnsupportedResponseType ServerErrorTemporarilyUnavailablebase Data.EitherLeftRightparseResponseString