packages feed

fb 0.14.5 → 0.14.6

raw patch · 3 files changed

+100/−1 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Facebook: Order :: OrderId -> UserId -> UserId -> Integer -> OrderStatus -> OrderApplication -> Text -> Maybe Text -> ZonedTime -> ZonedTime -> Order
+ Facebook: data Order
+ Facebook: data OrderApplication
+ Facebook: data OrderStatus
+ Facebook: getOrder :: (MonadResource m, MonadBaseControl IO m) => OrderId -> UserAccessToken -> FacebookT anyAuth m Order
+ Facebook: orderAmount :: Order -> Integer
+ Facebook: orderApplication :: Order -> OrderApplication
+ Facebook: orderCountry :: Order -> Text
+ Facebook: orderCreatedTime :: Order -> ZonedTime
+ Facebook: orderFrom :: Order -> UserId
+ Facebook: orderId :: Order -> OrderId
+ Facebook: orderRefundCode :: Order -> Maybe Text
+ Facebook: orderStatus :: Order -> OrderStatus
+ Facebook: orderTo :: Order -> UserId
+ Facebook: orderUpdatedTime :: Order -> ZonedTime
+ Facebook: type OrderId = Id

Files

fb.cabal view
@@ -1,5 +1,5 @@ name:              fb-version:           0.14.5+version:           0.14.6 license:           BSD3 license-file:      LICENSE author:            Felipe Lessa@@ -56,6 +56,7 @@     Facebook.Object.Checkin     Facebook.Object.User     Facebook.Object.Page+    Facebook.Object.Order     Facebook.RealTime     Facebook.FQL     Facebook.TestUsers
src/Facebook.hs view
@@ -55,6 +55,12 @@     , CheckinFrom(..)     , getCheckin     , createCheckin+      -- ** Order+    , Order(..)+    , OrderId+    , OrderApplication+    , OrderStatus+    , getOrder        -- * Facebook's Graph API basic functionality       -- ** Simple types@@ -127,6 +133,7 @@ import Facebook.Object.User import Facebook.Object.Action import Facebook.Object.Checkin+import Facebook.Object.Order import Facebook.RealTime import Facebook.FQL import Facebook.TestUsers
+ src/Facebook/Object/Order.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveDataTypeable, FlexibleContexts, OverloadedStrings #-}+module Facebook.Object.Order+    ( Order(..)+    , OrderId+    , OrderStatus(..)+    , OrderApplication(..)+    , getOrder+    ) where++import Control.Applicative+import Control.Monad (mzero)+import Control.Monad.Trans.Control (MonadBaseControl)+import Data.Text (Text)+import Data.Aeson ((.:), (.:?))+import Data.Typeable (Typeable)+import Data.Time.LocalTime (ZonedTime)++import qualified Data.Aeson as A+import qualified Data.Conduit as C++import Facebook.Types+import Facebook.Monad+import Facebook.Graph++-- | 'Order' Id type.+type OrderId = Id++-- | A Facebook @Order@ oject.+data Order = Order {+    orderId             :: OrderId,+    orderFrom           :: UserId,+    orderTo             :: UserId,+    orderAmount         :: Integer,+    orderStatus         :: OrderStatus,+    orderApplication    :: OrderApplication,+    orderCountry        :: Text,+    orderRefundCode     :: Maybe Text,+    orderCreatedTime    :: ZonedTime,+    orderUpdatedTime    :: ZonedTime+} deriving (Show, Typeable)++-- | A Facebook 'Order' status type.+data OrderStatus =+    OrderPlaced+    | OrderSettled+    | OrderRefunded+    | OrderDisputed+    | OrderCancelled+    deriving (Show, Enum, Eq, Typeable)++-- | A trimmed down version of Facebook Application as it is used in 'Order'.+data OrderApplication = OrderApplication {+    appId   :: Text,+    appName :: Text+} deriving (Show, Typeable)++instance A.FromJSON OrderApplication where+    parseJSON (A.Object v)  =+        OrderApplication    <$> v .: "id"+                            <*> v .: "name"+    parseJSON _             = mzero++instance A.FromJSON Order where+    parseJSON (A.Object v) =+        Order   <$> v .: "id"+                <*> v .: "from"+                <*> v .: "to"+                <*> v .: "amount"+                <*> v .: "status"+                <*> v .: "application"+                <*> v .: "country"+                <*> v .:? "refund_reason_code"+                <*> v .: "created_time"+                <*> v .: "updated_time"+    parseJSON _ = mzero++instance A.FromJSON OrderStatus where+    parseJSON (A.String "placed")       = return OrderPlaced+    parseJSON (A.String "settled")      = return OrderSettled+    parseJSON (A.String "refunded")     = return OrderRefunded+    parseJSON (A.String "disputed")     = return OrderDisputed+    parseJSON (A.String "cancelled")    = return OrderCancelled+    parseJSON _                         = mzero++-- | Get an 'Order' using its 'OrderId'.  The user access token+-- is mandatory.+getOrder :: (C.MonadResource m, MonadBaseControl IO m) =>+           OrderId         -- ^ Order ID.+        -> UserAccessToken -- ^ User access token.+        -> FacebookT anyAuth m Order+getOrder id_ mtoken = getObject ("/" <> idCode id_) [] (Just mtoken)