module Facebook.Types
( Credentials(..)
, AccessToken(..)
, AccessTokenData
, UserId
, accessTokenData
, accessTokenExpires
, accessTokenUserId
, User
, App
, Argument
, (<>)
) where
import Data.ByteString (ByteString)
import Data.Monoid (Monoid, mappend)
import Data.Time (UTCTime)
import Data.Typeable (Typeable, Typeable1)
import Network.HTTP.Types (Ascii)
data Credentials =
Credentials { appName :: Ascii
, appId :: Ascii
, appSecret :: Ascii
}
deriving (Eq, Ord, Show, Typeable)
data AccessToken kind where
UserAccessToken :: UserId -> AccessTokenData -> UTCTime -> AccessToken User
AppAccessToken :: AccessTokenData -> AccessToken App
deriving instance Eq (AccessToken kind)
deriving instance Ord (AccessToken kind)
deriving instance Show (AccessToken kind)
deriving instance Typeable1 AccessToken
type AccessTokenData = Ascii
type UserId = Ascii
accessTokenData :: AccessToken kind -> AccessTokenData
accessTokenData (UserAccessToken _ d _) = d
accessTokenData (AppAccessToken d) = d
accessTokenExpires :: AccessToken kind -> Maybe UTCTime
accessTokenExpires (UserAccessToken _ _ expt) = Just expt
accessTokenExpires (AppAccessToken _) = Nothing
accessTokenUserId :: AccessToken User -> UserId
accessTokenUserId (UserAccessToken uid _ _) = uid
data User deriving (Typeable)
data App deriving (Typeable)
type Argument = (ByteString, ByteString)
(<>) :: Monoid a => a -> a -> a
(<>) = mappend