fb-persistent 0.1.4 → 0.2
raw patch · 2 files changed
+28/−10 lines, 2 filesdep +textdep ~fbPVP ok
version bump matches the API change (PVP)
Dependencies added: text
Dependency ranges changed: fb
API changes (from Hackage documentation)
Files
- fb-persistent.cabal +3/−2
- src/Facebook/Persistent.hs +25/−8
fb-persistent.cabal view
@@ -1,5 +1,5 @@ name: fb-persistent-version: 0.1.4+version: 0.2 license: BSD3 license-file: LICENSE author: Felipe Lessa@@ -31,7 +31,8 @@ Facebook.Persistent build-depends: base >= 4 && < 5- , fb >= 0.7.1+ , fb >= 0.13 , persistent >= 0.7 && < 1.1 , cereal == 0.3.* , time == 1.4.*+ , text
src/Facebook/Persistent.hs view
@@ -17,11 +17,13 @@ import Control.Applicative ((<$>), (<*>)) import Data.String (fromString)+import Data.Text (Text) import Data.Int (Int64) import Data.Word (Word8) import Database.Persist import Facebook import qualified Data.Serialize as S+import qualified Data.Text.Encoding as TE import qualified Data.Time.Clock as T import qualified Data.Time.Clock.POSIX as T @@ -39,10 +41,13 @@ -- | From @fb-persistent@. Since 0.1.2.+--+-- We use 'ByteString' for historical purposes in order to+-- maintain compatibility with @fb < 0.13@. instance PersistField Id where- toPersistValue = toPersistValue . idCode- fromPersistValue v = Id <$> fromPersistValue v- sqlType = sqlType . idCode+ toPersistValue = toPersistValue . TE.encodeUtf8 . idCode+ fromPersistValue v = Id . TE.decodeUtf8 <$> fromPersistValue v+ sqlType = sqlType . TE.encodeUtf8 . idCode isNullable _ = False @@ -71,26 +76,38 @@ instance AccessTokenKind UserKind where accessTokenPut (UserAccessToken uid token expires) = do S.putWord8 0- S.put uid- S.put token+ putId uid+ putText token putUTCTime expires accessTokenGet = do v <- S.getWord8 case v of- 0 -> UserAccessToken <$> S.get <*> S.get <*> getUTCTime+ 0 -> UserAccessToken <$> getId <*> getText <*> getUTCTime 1 -> fail $ "fb-persistent: AccessToken: tried to decode an AppAccessToken as UserAccessToken." _ -> accessTokenUnknownVersion v instance AccessTokenKind AppKind where accessTokenPut (AppAccessToken token) = do S.putWord8 1- S.put token+ putText token accessTokenGet = do v <- S.getWord8 case v of- 1 -> AppAccessToken <$> S.get+ 1 -> AppAccessToken <$> getText 0 -> fail $ "fb-persistent: AccessToken: tried to decode an UserAccessToken as AppAccessToken." _ -> accessTokenUnknownVersion v++getText :: S.Get Text+getText = TE.decodeUtf8 <$> S.get++putText :: Text -> S.Put+putText = S.put . TE.encodeUtf8++getId :: S.Get Id+getId = Id <$> getText++putId :: Id -> S.Put+putId = putText . idCode putUTCTime :: T.UTCTime -> S.Put