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 +2/−1
- src/Facebook.hs +7/−0
- src/Facebook/Object/Order.hs +91/−0
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)