yesod-fb 0.2.3 → 0.3
raw patch · 2 files changed
+28/−29 lines, 2 filesdep ~yesod-core
Dependency ranges changed: yesod-core
Files
- src/Yesod/Facebook.hs +26/−27
- yesod-fb.cabal +2/−2
src/Yesod/Facebook.hs view
@@ -1,6 +1,6 @@-{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE OverloadedStrings, TypeFamilies #-} module Yesod.Facebook- ( -- * Running @FacebookT@ actions inside @GHandler@+ ( -- * Running @FacebookT@ actions inside @HandlerT@ YesodFacebook(..) , runYesodFbT , runNoAuthYesodFbT@@ -31,38 +31,37 @@ -- | The 'YesodFacebook' class for foundation datatypes that -- support running 'FB.FacebookT' actions.-class Y.Yesod master => YesodFacebook master where+class Y.Yesod site => YesodFacebook site where -- | The credentials of your app.- fbCredentials :: master -> FB.Credentials+ fbCredentials :: site -> FB.Credentials -- | HTTP manager used for contacting Facebook (may be the same -- as the one used for @yesod-auth@).- fbHttpManager :: master -> HTTP.Manager+ fbHttpManager :: site -> HTTP.Manager -- | Use Facebook's beta tier if @True@. The default is @False@.- fbUseBetaTier :: master -> Bool+ fbUseBetaTier :: site -> Bool fbUseBetaTier _ = False -- | Returns Facebook's 'FB.Credentials' from inside a--- 'Y.GHandler'. Just a convenience wrapper around+-- 'Y.HandlerT'. Just a convenience wrapper around -- 'fbCredentials'.-getFbCredentials :: YesodFacebook master =>- Y.GHandler sub master FB.Credentials+getFbCredentials :: (Y.MonadHandler m, Y.HandlerSite m ~ site, YesodFacebook site) =>+ m FB.Credentials getFbCredentials = fbCredentials <$> Y.getYesod -- | Run a 'FacebookT' action inside a 'Y.GHandler' using your -- credentials. runYesodFbT ::- YesodFacebook master =>- FB.FacebookT FB.Auth (Y.GHandler sub master) a- -> Y.GHandler sub master a+ (Y.MonadHandler m, Y.HandlerSite m ~ site, YesodFacebook site) =>+ FB.FacebookT FB.Auth m a -> m a runYesodFbT act = do- master <- Y.getYesod- let creds = fbCredentials master- manager = fbHttpManager master- (if fbUseBetaTier master+ site <- Y.getYesod+ let creds = fbCredentials site+ manager = fbHttpManager site+ (if fbUseBetaTier site then FB.beta_runFacebookT else FB.runFacebookT) creds manager act @@ -71,13 +70,12 @@ -- your credentials. Usually you won't need to use this function -- but it's provided for completeness' sake. runNoAuthYesodFbT ::- YesodFacebook master =>- FB.FacebookT FB.NoAuth (Y.GHandler sub master) a- -> Y.GHandler sub master a+ (Y.MonadHandler m, Y.HandlerSite m ~ site, YesodFacebook site) =>+ FB.FacebookT FB.NoAuth m a -> m a runNoAuthYesodFbT act = do- master <- Y.getYesod- let manager = fbHttpManager master- (if fbUseBetaTier master+ site <- Y.getYesod+ let manager = fbHttpManager site+ (if fbUseBetaTier site then FB.runNoAuthFacebookT else FB.beta_runNoAuthFacebookT) manager act @@ -90,8 +88,8 @@ -- fails (signature header not found, invalid signature, invalid -- JSON). parseRealTimeUpdateNotifications ::- (YesodFacebook master, A.FromJSON a) =>- Y.GHandler sub master (FB.RealTimeUpdateNotification a)+ (Y.MonadHandler m, Y.HandlerSite m ~ site, YesodFacebook site, A.FromJSON a) =>+ m (FB.RealTimeUpdateNotification a) parseRealTimeUpdateNotifications = do let myFail = fail . ("parseRealTimeUpdateNotifications: " ++) -- Get request's signature.@@ -99,7 +97,7 @@ case lookup "X-Hub-Signature" (W.requestHeaders waiReq) of Nothing -> myFail "X-Hub-Signature not found." Just sig -> do- uncheckedData <- L.fromChunks <$> Y.lift (W.requestBody waiReq C.$$ CL.consume)+ uncheckedData <- L.fromChunks <$> (Y.rawRequestBody C.$$ CL.consume) mcheckedData <- runYesodFbT $ FB.verifyRealTimeUpdateNotifications sig uncheckedData case mcheckedData of Nothing -> myFail "Signature is invalid."@@ -119,8 +117,9 @@ -- 'FB.RealTimeUpdateToken' matches, otherwise it will return -- 'Y.notFound'. answerRealTimeUpdateChallenge ::+ Y.MonadHandler m => FB.RealTimeUpdateToken- -> Y.GHandler sub master Y.RepPlain+ -> m Y.RepPlain answerRealTimeUpdateChallenge token = do mhubMode <- Y.lookupGetParam "hub.mode" mhubChallenge <- Y.lookupGetParam "hub.challenge"@@ -139,6 +138,6 @@ -- | Lookup and parse the @request_ids@ GET parameter -- <http://developers.facebook.com/docs/requests/>.-lookupRequestIds :: Y.GHandler sub master (Maybe [FB.Id])+lookupRequestIds :: Y.MonadHandler m => m (Maybe [FB.Id]) lookupRequestIds = (map FB.Id . T.splitOn ",") <$$> Y.lookupGetParam "request_ids" where (<$$>) = fmap . fmap
yesod-fb.cabal view
@@ -1,5 +1,5 @@ Name: yesod-fb-Version: 0.2.3+Version: 0.3 Synopsis: Useful glue functions between the fb library and Yesod. Homepage: https://github.com/meteficha/yesod-fb License: BSD3@@ -25,7 +25,7 @@ hs-source-dirs: src Build-depends: base >= 4.3 && < 5- , yesod-core == 1.1.*+ , yesod-core == 1.2.* , fb >= 0.11.1 && < 0.15 , crypto-api