Skip to content

Commit

Permalink
Allow JWT as an authentication method, fixes haskell-github#489
Browse files Browse the repository at this point in the history
  • Loading branch information
Tom Sydney Kerckhove committed Jul 16, 2023
1 parent f701d41 commit b893b31
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/GitHub/Auth.hs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
module GitHub.Auth (
Auth (..),
Token,
JWTToken,
AuthMethod,
endpoint,
setAuthRequest
Expand All @@ -9,14 +11,17 @@ import GitHub.Internal.Prelude
import Prelude ()

import qualified Data.ByteString as BS
import qualified Data.Text.Encoding as TE
import qualified Network.HTTP.Client as HTTP

type Token = BS.ByteString
type JWTToken = Text

-- | The Github auth data type
data Auth
= BasicAuth BS.ByteString BS.ByteString -- ^ Username and password
| OAuth Token -- ^ OAuth token
| JWT JWTToken -- ^ JWT Token
| EnterpriseOAuth Text Token -- ^ Custom endpoint and OAuth token
deriving (Show, Data, Typeable, Eq, Ord, Generic)

Expand All @@ -40,10 +45,12 @@ instance AuthMethod () where
instance AuthMethod Auth where
endpoint (BasicAuth _ _) = Nothing
endpoint (OAuth _) = Nothing
endpoint (JWT _) = Nothing
endpoint (EnterpriseOAuth e _) = Just e

setAuthRequest (BasicAuth u p) = HTTP.applyBasicAuth u p
setAuthRequest (OAuth t) = setAuthHeader $ "token " <> t
setAuthRequest (JWT t) = setAuthHeader $ "Bearer " <> TE.encodeUtf8 t
setAuthRequest (EnterpriseOAuth _ t) = setAuthHeader $ "token " <> t

setAuthHeader :: BS.ByteString -> HTTP.Request -> HTTP.Request
Expand Down

0 comments on commit b893b31

Please sign in to comment.