yesod-auth-oauth2 0.1.3 → 0.1.4
raw patch · 2 files changed
+24/−30 lines, 2 filesdep ~vectorPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: vector
API changes (from Hackage documentation)
- Yesod.Auth.OAuth2: instance Exception YesodOAuth2Exception
- Yesod.Auth.OAuth2: instance Show YesodOAuth2Exception
- Yesod.Auth.OAuth2: instance Typeable YesodOAuth2Exception
- Yesod.Auth.OAuth2.EveOnline: instance FromJSON EveUser
- Yesod.Auth.OAuth2.Github: instance FromJSON GithubUser
- Yesod.Auth.OAuth2.Github: instance FromJSON GithubUserEmail
- Yesod.Auth.OAuth2.Google: instance FromJSON GoogleUser
- Yesod.Auth.OAuth2.Nylas: instance FromJSON NylasNamespace
- Yesod.Auth.OAuth2.Spotify: instance FromJSON SpotifyUser
- Yesod.Auth.OAuth2.Spotify: instance FromJSON SpotifyUserImage
- Yesod.Auth.OAuth2.Twitter: instance FromJSON TwitterUser
- Yesod.Auth.OAuth2.Upcase: instance FromJSON UpcaseResponse
- Yesod.Auth.OAuth2.Upcase: instance FromJSON UpcaseUser
+ Yesod.Auth.OAuth2: instance GHC.Exception.Exception Yesod.Auth.OAuth2.YesodOAuth2Exception
+ Yesod.Auth.OAuth2: instance GHC.Show.Show Yesod.Auth.OAuth2.YesodOAuth2Exception
+ Yesod.Auth.OAuth2.EveOnline: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.EveOnline.EveUser
+ Yesod.Auth.OAuth2.Github: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.Github.GithubUser
+ Yesod.Auth.OAuth2.Github: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.Github.GithubUserEmail
+ Yesod.Auth.OAuth2.Google: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.Google.GoogleUser
+ Yesod.Auth.OAuth2.Nylas: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.Nylas.NylasAccount
+ Yesod.Auth.OAuth2.Spotify: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.Spotify.SpotifyUser
+ Yesod.Auth.OAuth2.Spotify: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.Spotify.SpotifyUserImage
+ Yesod.Auth.OAuth2.Twitter: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.Twitter.TwitterUser
+ Yesod.Auth.OAuth2.Upcase: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.Upcase.UpcaseResponse
+ Yesod.Auth.OAuth2.Upcase: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.OAuth2.Upcase.UpcaseUser
Files
- Yesod/Auth/OAuth2/Nylas.hs +22/−28
- yesod-auth-oauth2.cabal +2/−2
Yesod/Auth/OAuth2/Nylas.hs view
@@ -16,7 +16,6 @@ import Data.Monoid ((<>)) import Data.Text (Text) import Data.Text.Encoding (encodeUtf8, decodeUtf8)-import Data.Vector ((!?)) import Network.HTTP.Client (applyBasicAuth, parseUrl, httpLbs, responseStatus , responseBody) import Network.HTTP.Conduit (Manager)@@ -28,25 +27,21 @@ import qualified Data.Text as T import qualified Network.HTTP.Types as HT -data NylasNamespace = NylasNamespace- { nylasNamespaceId :: Text- , nylasNamespaceAccountId :: Text- , nylasNamespaceEmailAddress :: Text- , nylasNamespaceName :: Text- , nylasNamespaceProvider :: Text- , nylasNamespaceOrganizationUnit :: Text+data NylasAccount = NylasAccount+ { nylasAccountId :: Text+ , nylasAccountEmailAddress :: Text+ , nylasAccountName :: Text+ , nylasAccountProvider :: Text+ , nylasAccountOrganizationUnit :: Text } -instance FromJSON NylasNamespace where- parseJSON (Array singleton) = case singleton !? 0 of- Just (Object o) -> NylasNamespace- <$> o .: "id"- <*> o .: "account_id"- <*> o .: "email_address"- <*> o .: "name"- <*> o .: "provider"- <*> o .: "organization_unit"- _ -> mzero+instance FromJSON NylasAccount where+ parseJSON (Object o) = NylasAccount+ <$> o .: "id"+ <*> o .: "email_address"+ <*> o .: "name"+ <*> o .: "provider"+ <*> o .: "organization_unit" parseJSON _ = mzero oauth2Nylas :: YesodAuth m@@ -77,7 +72,7 @@ fetchCreds :: Manager -> AccessToken -> IO (Creds a) fetchCreds manager token = do- req <- authorize <$> parseUrl "https://api.nylas.com/n"+ req <- authorize <$> parseUrl "https://api.nylas.com/account" resp <- httpLbs req manager if HT.statusIsSuccessful (responseStatus resp) then case decode (responseBody resp) of@@ -86,19 +81,18 @@ else throwIO requestFailure where authorize = applyBasicAuth (accessToken token) ""- parseFailure = InvalidProfileResponse "nylas" "failed to parse namespace"- requestFailure = InvalidProfileResponse "nylas" "failed to get namespace"+ parseFailure = InvalidProfileResponse "nylas" "failed to parse account"+ requestFailure = InvalidProfileResponse "nylas" "failed to get account" -toCreds :: NylasNamespace -> AccessToken -> Creds a+toCreds :: NylasAccount -> AccessToken -> Creds a toCreds ns token = Creds { credsPlugin = "nylas"- , credsIdent = nylasNamespaceId ns+ , credsIdent = nylasAccountId ns , credsExtra =- [ ("account_id", nylasNamespaceAccountId ns)- , ("email_address", nylasNamespaceEmailAddress ns)- , ("name", nylasNamespaceName ns)- , ("provider", nylasNamespaceProvider ns)- , ("organization_unit", nylasNamespaceOrganizationUnit ns)+ [ ("email_address", nylasAccountEmailAddress ns)+ , ("name", nylasAccountName ns)+ , ("provider", nylasAccountProvider ns)+ , ("organization_unit", nylasAccountOrganizationUnit ns) , ("access_token", decodeUtf8 $ accessToken token) ] }
yesod-auth-oauth2.cabal view
@@ -1,5 +1,5 @@ name: yesod-auth-oauth2-version: 0.1.3+version: 0.1.4 license: BSD3 license-file: LICENSE author: Tom Streller@@ -37,7 +37,7 @@ , transformers >= 0.2.2 && < 0.5 , hoauth2 >= 0.4.7 && < 0.5 , lifted-base >= 0.2 && < 0.4- , vector >= 0.10 && < 0.11+ , vector >= 0.10 && < 0.12 exposed-modules: Yesod.Auth.OAuth2 Yesod.Auth.OAuth2.Github