snaplet-oauth-0.0.6: src/Snap/Snaplet/OAuth/Github/Api.hs
{-# LANGUAGE OverloadedStrings #-}
{-
-}
module Snap.Snaplet.OAuth.Github.Api where
import Control.Applicative
import Control.Monad (mzero)
import Data.Aeson
import qualified Data.ByteString as BS
import Data.Text (Text)
import Snap.Snaplet.OAuth.Internal.Types
import Snap.Snaplet.OAuth.Internal.Utils
----------------------------------------------------------------------
-- APIs Impl
----------------------------------------------------------------------
-- | TODO: maybe need email infomation
--
data GithubUser = GithubUser { gid :: Integer
, gname :: Text
, glogin :: Text
, glink :: Text
} deriving (Show, Eq)
instance FromJSON GithubUser where
parseJSON (Object o) = GithubUser
<$> o .: "id"
<*> o .: "name"
<*> o .: "login"
<*> o .: "html_url"
parseJSON _ = mzero
----------------------------------------------------------------------
-- APIs Impl
----------------------------------------------------------------------
apiUser :: OAuthValue -> IO (Maybe GithubUser)
apiUser = apiRequestOAuth apiUrlUser
----------------------------------------------------------------------
-- APIs URI
----------------------------------------------------------------------
-- | Possible operations of UserInfo
--
apiUrlUser :: BS.ByteString
apiUrlUser = "https://api.github.com/user"