Skip to content

Commit 81ece80

Browse files
committed
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.
1 parent d2e384c commit 81ece80

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

Yesod/Auth/OAuth2/Github.hs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ import qualified Data.Text as T
3232

3333
data GithubUser = GithubUser
3434
{ githubUserId :: Int
35-
, githubUserName :: Text
35+
, githubUserName :: Maybe Text
3636
, githubUserLogin :: Text
3737
, githubUserAvatarUrl :: Text
3838
}
3939

4040
instance FromJSON GithubUser where
4141
parseJSON (Object o) =
4242
GithubUser <$> o .: "id"
43-
<*> o .: "name"
43+
<*> o .:? "name"
4444
<*> o .: "login"
4545
<*> o .: "avatar_url"
4646

@@ -113,9 +113,12 @@ fetchGithubProfile manager token = do
113113
toCreds :: GithubUser -> [GithubUserEmail] -> AccessToken -> Creds m
114114
toCreds user userMail token = Creds "github"
115115
(T.pack $ show $ githubUserId user)
116-
[ ("name", githubUserName user)
117-
, ("email", githubUserEmail $ head userMail)
118-
, ("login", githubUserLogin user)
119-
, ("avatar_url", githubUserAvatarUrl user)
120-
, ("access_token", decodeUtf8 $ accessToken token)
121-
]
116+
cExtra
117+
where
118+
cExtra = [ ("email", githubUserEmail $ head userMail)
119+
, ("login", githubUserLogin user)
120+
, ("avatar_url", githubUserAvatarUrl user)
121+
, ("access_token", decodeUtf8 $ accessToken token)
122+
] ++ (maybeName $ githubUserName user)
123+
maybeName Nothing = []
124+
maybeName (Just name) = [("name", name)]

0 commit comments

Comments
 (0)