packages feed

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 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