authenticate-oauth 1.0.0.1 → 1.1
raw patch · 2 files changed
+19/−10 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Web.Authenticate.OAuth: OAuth10 :: OAuthVersion
+ Web.Authenticate.OAuth: OAuth10a :: OAuthVersion
+ Web.Authenticate.OAuth: data OAuthVersion
+ Web.Authenticate.OAuth: injectVerifier :: ByteString -> Credential -> Credential
+ Web.Authenticate.OAuth: instance Data OAuthVersion
+ Web.Authenticate.OAuth: instance Eq OAuthVersion
+ Web.Authenticate.OAuth: instance Ord OAuthVersion
+ Web.Authenticate.OAuth: instance Read OAuthVersion
+ Web.Authenticate.OAuth: instance Show OAuthVersion
+ Web.Authenticate.OAuth: instance Typeable OAuthVersion
+ Web.Authenticate.OAuth: oauthVersion :: OAuth -> OAuthVersion
Files
- Web/Authenticate/OAuth.hs +18/−9
- authenticate-oauth.cabal +1/−1
Web/Authenticate/OAuth.hs view
@@ -4,10 +4,10 @@ ( -- * Data types OAuth, def, newOAuth, oauthServerName, oauthRequestUri, oauthAccessTokenUri, oauthAuthorizeUri, oauthSignatureMethod, oauthConsumerKey,- oauthConsumerSecret, oauthCallback, oauthRealm,- SignMethod(..), Credential(..), OAuthException(..),+ oauthConsumerSecret, oauthCallback, oauthRealm, oauthVersion,+ OAuthVersion(..), SignMethod(..), Credential(..), OAuthException(..), -- * Operations for credentials- newCredential, emptyCredential, insert, delete, inserts,+ newCredential, emptyCredential, insert, delete, inserts, injectVerifier, -- * Signature signOAuth, genSign, -- * Url & operation for authentication@@ -76,8 +76,14 @@ -- ^ Callback uri to redirect after authentication (default: @Nothing@) , oauthRealm :: Maybe BS.ByteString -- ^ Optional authorization realm (default: @Nothing@)+ , oauthVersion :: OAuthVersion+ -- ^ OAuth spec version (default: 'OAuth10a') } deriving (Show, Eq, Ord, Read, Data, Typeable) +data OAuthVersion = OAuth10 -- ^ OAuth protocol ver 1.0 (no oauth_verifier; differs from RFC 5849).+ | OAuth10a -- ^ OAuth protocol ver 1.0a. This corresponds to community's 1.0a spec and RFC 5849.+ deriving (Show, Eq, Ord, Data, Typeable, Read)+ -- | Default value for OAuth datatype. -- You must specify at least oauthServerName, URIs and Tokens. newOAuth :: OAuth@@ -90,6 +96,7 @@ , oauthAuthorizeUri = "" , oauthConsumerKey = error "You MUST specify oauthConsumerKey parameter." , oauthConsumerSecret = error "You MUST specify oauthConsumerSecret parameter."+ , oauthVersion = OAuth10a } instance Default OAuth where@@ -185,7 +192,7 @@ -> String -- ^ URL to authorize authorizeUrl = authorizeUrl' $ \oa -> const [("oauth_consumer_key", oauthConsumerKey oa)] --- | Convert OAuth and Credential to URL to obatin OAuth Verifier.+-- | Convert OAuth and Credential to URL to authorize. -- This takes function to choice parameter to pass to the server other than -- /oauth_callback/ or /oauth_token/. authorizeUrl' :: (OAuth -> Credential -> SimpleQuery)@@ -204,7 +211,7 @@ getAccessToken, getTokenCredential :: ResourceIO m => OAuth -- ^ OAuth Application- -> Credential -- ^ Temporary Credential with oauth_verifier+ -> Credential -- ^ Temporary Credential (with oauth_verifier if >= 1.0a) -> Manager -> ResourceT m Credential -- ^ Token Credential (Access Token & Secret) getAccessToken = getAccessToken' id@@ -214,7 +221,7 @@ :: ResourceIO m => Maybe Proxy -- ^ Proxy -> OAuth -- ^ OAuth Application- -> Credential -- ^ Temporary Credential with oauth_verifier+ -> Credential -- ^ Temporary Credential (with oauth_verifier if >= 1.0a) -> Manager -> ResourceT m Credential -- ^ Token Credential (Access Token & Secret) getAccessTokenProxy p = getAccessToken' $ addMaybeProxy p@@ -222,19 +229,18 @@ getAccessToken' :: ResourceIO m => (Request m -> Request m) -- ^ Request Hook -> OAuth -- ^ OAuth Application- -> Credential -- ^ Temporary Credential with oauth_verifier+ -> Credential -- ^ Temporary Credential (with oauth_verifier if >= 1.0a) -> Manager -> ResourceT m Credential -- ^ Token Credential (Access Token & Secret) getAccessToken' hook oa cr manager = do let req = hook (fromJust $ parseUrl $ oauthAccessTokenUri oa) { method = "POST" }- rsp <- flip httpLbs manager =<< signOAuth oa cr req+ rsp <- flip httpLbs manager =<< signOAuth oa (if oauthVersion oa == OAuth10 then delete "oauth_verifier" cr else cr) req if statusCode rsp == status200 then do let dic = parseSimpleQuery . toStrict . responseBody $ rsp return $ Credential dic else liftIO . throwIO . OAuthException $ "Gaining OAuth Token Credential Failed: " ++ BSL.unpack (responseBody rsp) - getTokenCredential = getAccessToken getTokenCredentialProxy = getAccessTokenProxy @@ -260,6 +266,9 @@ -> Credential -- ^ Credential -> Credential -- ^ Result delete key = Credential . deleteMap key . unCredential++injectVerifier :: BS.ByteString -> Credential -> Credential+injectVerifier = insert "oauth_verifier" -- | Add OAuth headers & sign to 'Request'. signOAuth :: ResourceIO m
authenticate-oauth.cabal view
@@ -1,5 +1,5 @@ name: authenticate-oauth-version: 1.0.0.1+version: 1.1 license: BSD3 license-file: LICENSE author: Hiromi Ishii