packages feed

google-server-api 0.3.2.1 → 0.3.3.1

raw patch · 6 files changed

+100/−34 lines, 6 filesdep ~HsOpenSSLdep ~RSAdep ~aeson

Dependency ranges changed: HsOpenSSL, RSA, aeson, aeson-casing, base64-bytestring, bytestring, http-api-data, http-client, http-client-tls, http-media, mime-mail, monad-control, monad-logger, mtl, servant, servant-client, text, time, transformers, transformers-base, unix-time, unordered-containers, wai, wai-extra, warp

Files

google-server-api.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.2.+-- This file has been generated from package.yaml by hpack version 0.33.0. -- -- see: https://github.com/sol/hpack ----- hash: dfb218bddcb334f3b85a53829c1046e9b4769b28d15b15cdbaabfb5e8f2ea1e3+-- hash: a0f7961e20660b0657db7262b80d50981c8e43c6eb3f88bfc556e0010bf9dc0b  name:           google-server-api-version:        0.3.2.1+version:        0.3.3.1 synopsis:       Google APIs for server to server applications description:    This library provides a way to use Google API for server to server applications. category:       Web@@ -37,33 +37,33 @@       Paths_google_server_api   hs-source-dirs:       src-  default-extensions: AutoDeriveTypeable BangPatterns BinaryLiterals ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DoAndIfThenElse DuplicateRecordFields EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MonadFailDesugaring MultiParamTypeClasses MultiWayIf NamedFieldPuns OverloadedStrings PartialTypeSignatures PatternGuards PolyKinds RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving Strict StrictData TupleSections TypeFamilies TypeSynonymInstances ViewPatterns+  default-extensions: BangPatterns BinaryLiterals ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DoAndIfThenElse DuplicateRecordFields EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NamedFieldPuns OverloadedStrings PartialTypeSignatures PatternGuards PolyKinds RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving Strict StrictData TupleSections TypeFamilies TypeSynonymInstances ViewPatterns   ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints   build-depends:-      HsOpenSSL >=0.11.4.13-    , RSA >=2.3.0-    , aeson >=1.2.4.0-    , aeson-casing >=0.1.0.5+      HsOpenSSL >=0.11.4.13 && <0.12+    , RSA >=2.3.0 && <2.5+    , aeson >=1.2.4.0 && <1.6+    , aeson-casing >=0.1.0.5 && <0.3     , base >=4.9 && <5-    , base64-bytestring >=1.0.0.1-    , bytestring >=0.10.8.2-    , http-api-data >=0.3.7.2-    , http-client >=0.5.10-    , http-client-tls >=0.3.5.3-    , http-media >=0.7.1.2-    , mime-mail >=0.4.14-    , monad-control >=1.0.2.3-    , monad-logger >=0.3.28.1-    , mtl >=2.2.2-    , servant >=0.13-    , servant-client >=0.13-    , text >=1.2.3.0-    , time >=1.8.0.2-    , transformers >=0.5.2.0-    , transformers-base >=0.4.4-    , unix-time >=0.3.8-    , unordered-containers >=0.2.9.0-    , wai >=3.2.1.1-    , wai-extra >=3.0.22.0-    , warp >=3.2.18.1+    , base64-bytestring >=1.0.0.1 && <1.2+    , bytestring >=0.10.8.2 && <0.11+    , http-api-data >=0.3.7.2 && <0.5+    , http-client >=0.5.10 && <0.7+    , http-client-tls >=0.3.5.3 && <0.4+    , http-media >=0.7.1.2 && <0.9+    , mime-mail >=0.4.14 && <0.6+    , monad-control >=1.0.2.3 && <1.1+    , monad-logger >=0.3.28.1 && <0.4+    , mtl >=2.2.2 && <2.3+    , servant >=0.13 && <0.19+    , servant-client >=0.13 && <0.19+    , text >=1.2.3.0 && <1.3+    , time >=1.8.0.2 && <1.10+    , transformers >=0.5.2.0 && <0.6+    , transformers-base >=0.4.4 && <0.5+    , unix-time >=0.3.8 && <0.5+    , unordered-containers >=0.2.9.0 && <0.3+    , wai >=3.2.1.1 && <3.3+    , wai-extra >=3.0.22.0 && <3.2+    , warp >=3.2.18.1 && <3.4   default-language: Haskell2010
src/Google/Client.hs view
@@ -12,6 +12,8 @@   , getCalendarEventList   , postCalendarEvent   , postGmailSend+  , getGmailList+  , getGmailMessage   , getDriveFileList   , createDriveFileMultipart   , downloadDriveFile@@ -21,7 +23,9 @@ import Data.ByteString.Base64.URL (encode) import qualified Data.ByteString.Lazy as LBS import Data.Data (Data)+#if !MIN_VERSION_base(4, 11, 0) import Data.Monoid ((<>))+#endif import Data.Proxy (Proxy(..)) import Data.Text (Text) import Data.Text.Encoding (decodeUtf8)@@ -105,6 +109,14 @@     Header "Authorization" Bearer :>     ReqBody '[ JSON] Form.GmailSend :>     Post '[ JSON] Response.GmailSend+  :<|> "gmail" :> "v1" :> "users" :> "me" :> "messages" :>+    Header "Authorization" Bearer :>+    QueryParam "maxResults" Int :>+    QueryParam "labelIds" [Type.LabelId] :>+    Get '[ JSON] Response.GmailList+  :<|> "gmail" :> "v1" :> "users" :> "me" :> "messages" :> Capture "messageId" Text :>+    Header "Authorization" Bearer :>+    Get '[ JSON] Response.GmailMessage   :<|> "drive":> "v3" :> "files" :>     Header "Authorization" Bearer :>     QueryParam "q" Type.QueryString :>@@ -142,6 +154,8 @@   -> Form.CalendarEvent   -> ClientM Response.CalendarEvent postGmailSend' :: Maybe Bearer -> Form.GmailSend -> ClientM Response.GmailSend+getGmailList' :: Maybe Bearer -> Maybe Int -> Maybe [Type.LabelId] -> ClientM Response.GmailList+getGmailMessage' :: Text -> Maybe Bearer -> ClientM Response.GmailMessage getDriveFileList' ::      Maybe Bearer   -> Maybe Type.QueryString@@ -161,6 +175,8 @@   :<|> getCalendarEventList'   :<|> postCalendarEvent'   :<|> postGmailSend'+  :<|> getGmailList'+  :<|> getGmailMessage'   :<|> getDriveFileList'   :<|> createDriveFileMultipart'   :<|> downloadDriveFile'@@ -225,10 +241,26 @@     (postGmailSend' (pure . toBearer $ token) gmailSend)     (mkClientEnv manager googleBaseUrl) +getGmailList ::+     Response.Token -> Maybe Int -> Maybe [Type.LabelId] -> IO (Either ClientError Response.GmailList)+getGmailList token maxResults labelIds = do+  manager <- newManager tlsManagerSettings+  runClientM+    (getGmailList' (pure . toBearer $ token) maxResults labelIds)+    (mkClientEnv manager googleBaseUrl)++getGmailMessage ::+     Response.Token -> Text -> IO (Either ClientError Response.GmailMessage)+getGmailMessage token messageId = do+  manager <- newManager tlsManagerSettings+  runClientM+    (getGmailMessage' messageId (pure . toBearer $ token))+    (mkClientEnv manager googleBaseUrl)+ getDriveFileList ::      Response.Token   -> Form.GetFileParams-  -> IO (Either ServantError Response.FileList)+  -> IO (Either ClientError Response.FileList) getDriveFileList token Form.GetFileParams{..} = do   manager <- newManager tlsManagerSettings   runClientM@@ -241,7 +273,7 @@ createDriveFileMultipart ::      Response.Token   -> Form.MultipartBody-  -> IO (Either ServantError Response.FileResource)+  -> IO (Either ClientError Response.FileResource) createDriveFileMultipart token body = do   manager <- newManager tlsManagerSettings   runClientM@@ -254,7 +286,7 @@ downloadDriveFile ::      Response.Token   -> Form.DownloadFileParams-  -> IO (Either ServantError Response.MediaContent)+  -> IO (Either ClientError Response.MediaContent) downloadDriveFile token Form.DownloadFileParams {..} = do   manager <- newManager tlsManagerSettings   runClientM
src/Google/Form.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TemplateHaskell #-}  {- |@@ -23,7 +24,9 @@ import qualified Data.ByteString.Base64 as BSB import qualified Data.ByteString.Lazy as LBS import Data.Maybe (maybeToList)+#if !MIN_VERSION_base(4, 11, 0) import Data.Monoid ((<>))+#endif import Data.String (IsString(..)) import Data.Text (Text) import Data.Text.Encoding (encodeUtf8)@@ -34,7 +37,6 @@ import Network.Mail.Mime (Address(..), Mail(..), renderAddress, simpleMail) import Servant.API (MimeRender(..)) import Web.FormUrlEncoded (Form(..), ToForm(toForm))-import Web.Internal.HttpApiData (toQueryParam) import Web.HttpApiData (ToHttpApiData(..)) import qualified Data.HashMap.Strict as HashMap 
src/Google/JWT.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} -- | Create a signed JWT needed to make the access token request -- to gain access to Google APIs for server to server applications. --@@ -30,7 +31,9 @@ import qualified Data.ByteString.Lazy as LBS import Data.ByteString.Lazy (fromStrict, toStrict) import Data.Maybe (fromJust, fromMaybe)+#if !MIN_VERSION_base(4, 11, 0) import Data.Monoid ((<>))+#endif import Data.Text (Text) import qualified Data.Text as T import Data.Text.Encoding (encodeUtf8)@@ -75,6 +78,7 @@ data Scope   = ScopeCalendarFull   | ScopeCalendarRead+  | ScopeGmailFull   | ScopeGmailSend   | ScopeDriveFile   | ScopeDriveMetadataRead@@ -87,6 +91,7 @@ scopeUrl ScopeCalendarFull = "https://www.googleapis.com/auth/calendar" scopeUrl ScopeCalendarRead = "https://www.googleapis.com/auth/calendar.readonly" scopeUrl ScopeGmailSend = "https://www.googleapis.com/auth/gmail.send"+scopeUrl ScopeGmailFull = "https://www.googleapis.com/auth/gmail" scopeUrl ScopeDriveFile = "https://www.googleapis.com/auth/drive.file" scopeUrl ScopeDriveMetadataRead = "https://www.googleapis.com/auth/drive.metadata.readonly" @@ -146,7 +151,7 @@           ]   return $     either-      (fail "RSAError")+      (\err -> Left $ "RSAError: " <> show err)       (\s -> return $ SignedJWT $ i <> "." <> encode (toStrict s))       (rsassa_pkcs1_v1_5_sign hashSHA256 privateKey $ fromStrict i)   where
src/Google/Response.hs view
@@ -13,6 +13,8 @@   , CalendarEvent(..)   , CalendarEventList(..)   , GmailSend(..)+  , GmailList(..)+  , GmailMessage(..)   , FileResource(..)   , FileList(..)   , MediaContent(..)@@ -116,6 +118,21 @@  instance ToForm GmailSend +data GmailMessage = GmailMessage+  { id :: Text+  , threadId :: Text+  , snippet :: Maybe Text+  } deriving (Eq, Generic, Show, Typeable)+deriveJSON defaultOptions ''GmailMessage++instance FromForm GmailMessage++instance ToForm GmailMessage++data GmailList = GmailList+  { messages :: [GmailMessage]+  } deriving (Eq, Generic, Show, Typeable)+deriveJSON defaultOptions ''GmailList  data FileResource = FileResource   { kind :: Text
src/Google/Type.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE CPP #-}  {- | Module      :  Google.Type@@ -16,6 +17,7 @@   , SortKey(..)   , QueryString(..)   , Order(..)+  , LabelId(..)   ) where  import Data.Aeson.TH (Options(..), defaultOptions, deriveJSON)@@ -23,7 +25,9 @@ import qualified Data.ByteString.Lazy as LBS import Data.Char (toLower) import Data.List.NonEmpty (NonEmpty((:|)))+#if !MIN_VERSION_base(4, 11, 0) import Data.Monoid ((<>))+#endif import Data.Text (Text, intercalate) import Data.Typeable (Typeable) import GHC.Generics (Generic)@@ -172,4 +176,10 @@   toUrlPiece (Desc key) = toUrlPiece key <> " desc"  instance ToHttpApiData [Order] where+  toUrlPiece = (intercalate ",") . toUrlPieces++newtype LabelId = LabelId Text+  deriving (Eq, Generic, Show, Typeable, ToHttpApiData)++instance ToHttpApiData [LabelId] where   toUrlPiece = (intercalate ",") . toUrlPieces