Make Github name optional

The github API returns no name field if the user has given none (and
only goes by their user handle). For that reason, make the name field
optional.
This commit is contained in:
Florian Gilcher 2014-09-18 11:40:12 +02:00
parent d2e384c1aa
commit 81ece8072f

View File

@ -32,7 +32,7 @@ import qualified Data.Text as T
data GithubUser = GithubUser
{ githubUserId :: Int
, githubUserName :: Text
, githubUserName :: Maybe Text
, githubUserLogin :: Text
, githubUserAvatarUrl :: Text
}
@ -40,7 +40,7 @@ data GithubUser = GithubUser
instance FromJSON GithubUser where
parseJSON (Object o) =
GithubUser <$> o .: "id"
<*> o .: "name"
<*> o .:? "name"
<*> o .: "login"
<*> o .: "avatar_url"
@ -113,9 +113,12 @@ fetchGithubProfile manager token = do
toCreds :: GithubUser -> [GithubUserEmail] -> AccessToken -> Creds m
toCreds user userMail token = Creds "github"
(T.pack $ show $ githubUserId user)
[ ("name", githubUserName user)
, ("email", githubUserEmail $ head userMail)
, ("login", githubUserLogin user)
, ("avatar_url", githubUserAvatarUrl user)
, ("access_token", decodeUtf8 $ accessToken token)
]
cExtra
where
cExtra = [ ("email", githubUserEmail $ head userMail)
, ("login", githubUserLogin user)
, ("avatar_url", githubUserAvatarUrl user)
, ("access_token", decodeUtf8 $ accessToken token)
] ++ (maybeName $ githubUserName user)
maybeName Nothing = []
maybeName (Just name) = [("name", name)]