hoauth 0.2.3 → 0.2.4
raw patch · 3 files changed
+18/−13 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Network.OAuth.Http.HttpClient: unlift :: (HttpClient m) => m a -> IO a
+ Network.OAuth.Consumer: completeRequest :: (MonadIO m) => SigMethod -> Token -> Maybe Realm -> Request -> m Request
+ Network.OAuth.Http.HttpClient: unpack :: (HttpClient m) => m a -> IO a
- Network.OAuth.Consumer: oauthRequest :: (MonadIO m, HttpClient m) => SigMethod -> Maybe Realm -> Request -> OAuthMonad m (Either String Token)
+ Network.OAuth.Consumer: oauthRequest :: (MonadIO m, HttpClient m) => SigMethod -> Maybe Realm -> Request -> OAuthMonad m Token
Files
- hoauth.cabal +1/−1
- src/main/haskell/Network/OAuth/Consumer.hs +15/−10
- src/main/haskell/Network/OAuth/Http/HttpClient.hs +2/−2
hoauth.cabal view
@@ -1,5 +1,5 @@ name: hoauth-version: 0.2.3+version: 0.2.4 category: Network,Protocol,OAuth license: BSD3 license-file: LICENSE
src/main/haskell/Network/OAuth/Consumer.hs view
@@ -59,6 +59,7 @@ -- * OAuthMonad related functions ,runOAuth ,oauthRequest+ ,completeRequest ,serviceRequest ,cliAskAuthorization ,ignite@@ -207,22 +208,26 @@ -- | Executes an oauth request which is intended to upgrade/refresh the current -- token. Use this combinator to get either a request token or an access -- token.-oauthRequest :: (MonadIO m,HttpClient m) => SigMethod -> Maybe Realm -> Request -> OAuthMonad m (Either String Token)+oauthRequest :: (MonadIO m,HttpClient m) => SigMethod -> Maybe Realm -> Request -> OAuthMonad m Token oauthRequest sigm realm req = do response <- serviceRequest sigm realm req token <- get case (fromResponse response token)- of (Right token') -> do put token'- return (Right token')- (Left err) -> return (Left err)+ of (Right token') -> do put token'+ return token'+ (Left err) -> fail err +-- | Simply complete the request with the required information to perform the oauth request.+completeRequest :: (MonadIO m) => SigMethod -> Token -> Maybe Realm -> Request -> m Request+completeRequest sigm token realm req = do nonce <- _nonce+ timestamp <- _timestamp+ let authValue = authorization sigm realm nonce timestamp token req+ return (req {reqHeaders = insert ("Authorization",authValue) (reqHeaders req)})+ -- | Performs a signed request with the available token. serviceRequest :: (MonadIO m,HttpClient m) => SigMethod -> Maybe Realm -> Request -> OAuthMonad m Response-serviceRequest sigm realm req = do nonce <- _nonce- timestamp <- _timestamp- token <- get- - let authValue = authorization sigm realm nonce timestamp token req- lift (request (req {reqHeaders = insert ("Authorization",authValue) (reqHeaders req)}))+serviceRequest sigm realm req0 = do token <- get+ req <- completeRequest sigm token realm req0+ lift (request req) -- | Extracts the token from the OAuthMonad. getToken :: (Monad m) => OAuthMonad m Token
src/main/haskell/Network/OAuth/Http/HttpClient.hs view
@@ -45,14 +45,14 @@ request :: Request -> m Response -- | Unpacks the monad and returns the inner IO monad.- unlift :: m a -> IO a+ unpack :: m a -> IO a -- | The libcurl backend newtype CurlM a = CurlM { unCurlM :: IO a } deriving (Monad,MonadIO,MonadFix,Functor) instance HttpClient CurlM where- unlift = unCurlM+ unpack = unCurlM request req = CurlM $ withCurlDo $ do c <- initialize setopts c opts