Include public_email key in credsExtra for Github

This commit is contained in:
patrick brisbin 2016-02-07 14:53:11 -05:00
parent 29b4a7f4e7
commit f412b7c8f2
No known key found for this signature in database
GPG Key ID: ADB6812F871D4478

View File

@ -38,6 +38,7 @@ data GithubUser = GithubUser
, githubUserLogin :: Text , githubUserLogin :: Text
, githubUserAvatarUrl :: Text , githubUserAvatarUrl :: Text
, githubUserLocation :: Text , githubUserLocation :: Text
, githubUserPublicEmail :: Maybe Text
} }
instance FromJSON GithubUser where instance FromJSON GithubUser where
@ -47,6 +48,7 @@ instance FromJSON GithubUser where
<*> o .: "login" <*> o .: "login"
<*> o .: "avatar_url" <*> o .: "avatar_url"
<*> o .: "location" <*> o .: "location"
<*> o .: "email"
parseJSON _ = mzero parseJSON _ = mzero
@ -104,10 +106,16 @@ toCreds user userMails token = Creds
, ("avatar_url", githubUserAvatarUrl user) , ("avatar_url", githubUserAvatarUrl user)
, ("location", githubUserLocation user) , ("location", githubUserLocation user)
, ("access_token", decodeUtf8 $ accessToken token) , ("access_token", decodeUtf8 $ accessToken token)
] ++ maybeName (githubUserName user) ]
++ maybeName (githubUserName user)
++ maybePublicEmail (githubUserPublicEmail user)
} }
where where
email = fromMaybe (head userMails) $ find githubUserEmailPrimary userMails email = fromMaybe (head userMails) $ find githubUserEmailPrimary userMails
maybeName Nothing = [] maybeName Nothing = []
maybeName (Just name) = [("name", name)] maybeName (Just name) = [("name", name)]
maybePublicEmail Nothing = []
maybePublicEmail (Just e) = [("public_email", e)]