on develop help sign in
Removing extraneous imports and applying consistent formatting
47fb0dcBrendan Hay
core/src/Network/Google/Data/Numeric.hs+1−1
@@ -14,7 +14,7 @@ module Network.Google.Data.Numeric
14 ( Nat (..)
14 ( Nat (..)
15 ) where
15 ) where
16
16
17−import Control.Lens
17+
18import Control.Monad
18import Control.Monad
19import Data.Aeson
19import Data.Aeson
20import Data.Data
20import Data.Data
core/src/Network/Google/Prelude.hs−1
@@ -10,7 +10,6 @@ module Network.Google.Prelude
10 ( module Export
10 ( module Export
11 ) where
11 ) where
12
12
13−import Control.Applicative as Export (pure, (<$>), (<*>))
14import Control.Lens as Export (Lens', lens, mapping,
13import Control.Lens as Export (Lens', lens, mapping,
15 ( # ), (^.), _Just)
14 ( # ), (^.), _Just)
16import Data.Data as Export (Data, Typeable)
15import Data.Data as Export (Data, Typeable)
gogol/src/Network/Google/Auth.hs+9−38
@@ -76,52 +76,23 @@ module Network.Google.Auth
76 , module Network.Google.Auth.Scope
76 , module Network.Google.Auth.Scope
77 ) where
77 ) where
78
78
79−import Control.Applicative
80import Control.Concurrent
79import Control.Concurrent
81−import Control.Exception.Lens
80+import Control.Monad.Catch (MonadCatch)
82−import Control.Lens hiding (coerce, (.=))
83−import Control.Monad
84−import Control.Monad.Catch
85−import Control.Monad.IO.Class
81+import Control.Monad.IO.Class (MonadIO (..))
86−import Crypto.Hash.Algorithms (SHA256 (..))
87−import Crypto.PubKey.RSA.PKCS15 (signSafer)
88−import Crypto.PubKey.RSA.Types (PrivateKey)
89−import Data.Aeson
90−import Data.Aeson.Types
91−import Data.ByteArray
92−import Data.ByteArray.Encoding
93−import Data.ByteString (ByteString)
94−import Data.ByteString.Builder (Builder)
95−import qualified Data.ByteString.Builder as Build
96−import qualified Data.ByteString.Char8 as BS8
97−import qualified Data.ByteString.Lazy as LBS
98−import Data.Coerce
99−import Data.Default.Class (def)
100−import Data.List
101−import Data.String
102−import qualified Data.Text as Text
103import qualified Data.Text.Encoding as Text
82import qualified Data.Text.Encoding as Text
104−import Data.Time
83+import Data.Time (getCurrentTime)
105−import Data.Time.Clock.POSIX
106−import Data.Type.Bool
107−import Data.Type.Equality
108−import Data.Typeable
109−import Data.X509
110−import Data.X509.Memory
111−import GHC.Exts (Constraint)
112−import GHC.TypeLits
84+import GHC.TypeLits (Symbol)
113import Network.Google.Auth.ApplicationDefault
85import Network.Google.Auth.ApplicationDefault
114−import Network.Google.Auth.Device
115import Network.Google.Auth.InstalledApplication
86import Network.Google.Auth.InstalledApplication
116import Network.Google.Auth.Scope
87import Network.Google.Auth.Scope
117import Network.Google.Auth.ServiceAccount
88import Network.Google.Auth.ServiceAccount
118−import Network.Google.Compute.Metadata
89+import Network.Google.Compute.Metadata (checkGCEVar)
119import Network.Google.Internal.Auth
90import Network.Google.Internal.Auth
120−import Network.Google.Internal.Logger
91+import Network.Google.Internal.Logger (Logger)
121import Network.Google.Prelude
92import Network.Google.Prelude
122−import Network.HTTP.Conduit hiding (Proxy)
93+import Network.HTTP.Conduit (Manager)
123import qualified Network.HTTP.Conduit as Client
94import qualified Network.HTTP.Conduit as Client
124−import Network.HTTP.Types
95+import Network.HTTP.Types (hAuthorization)
125
96
126-- | An 'OAuthToken' that can potentially be expired, with the original
97-- | An 'OAuthToken' that can potentially be expired, with the original
127-- credentials that can be used to perform a refresh.
98-- credentials that can be used to perform a refresh.
@@ -183,7 +154,7 @@ exchange c l = fmap (Auth c) . action l
183 action = case c of
154 action = case c of
184 FromMetadata s -> metadataToken s
155 FromMetadata s -> metadataToken s
185 FromAccount a -> serviceAccountToken a (getScopes c)
156 FromAccount a -> serviceAccountToken a (getScopes c)
186− FromClient c n -> exchangeCode c n
157+ FromClient x n -> exchangeCode x n
187 FromUser u -> authorizedUserToken u Nothing
158 FromUser u -> authorizedUserToken u Nothing
188
159
189-- | Refresh an existing 'OAuthToken' using
160-- | Refresh an existing 'OAuthToken' using
gogol/src/Network/Google/Auth/ApplicationDefault.hs+16−43
@@ -8,55 +8,28 @@
8-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
8-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
9-- Stability : provisional
9-- Stability : provisional
10-- Portability : non-portable (GHC extensions)
10-- Portability : non-portable (GHC extensions)
11−
11+--
12module Network.Google.Auth.ApplicationDefault where
12module Network.Google.Auth.ApplicationDefault where
13
13
14import Control.Applicative
14import Control.Applicative
15−import Control.Concurrent
15+import Control.Exception.Lens (catching, throwingM)
16−import Control.Exception.Lens
17−import Control.Lens hiding (coerce, (.=))
18−import Control.Monad
16+import Control.Monad (unless)
19import Control.Monad.Catch
17import Control.Monad.Catch
20−import Control.Monad.IO.Class
18+import Control.Monad.IO.Class (MonadIO (..))
21−import Crypto.Hash.Algorithms (SHA256 (..))
22−import Crypto.PubKey.RSA.PKCS15 (signSafer)
23−import Crypto.PubKey.RSA.Types (PrivateKey)
24import Data.Aeson
19import Data.Aeson
25−import Data.Aeson.Types
20+import Data.Aeson.Types (parseEither)
26−import Data.ByteArray
27−import Data.ByteArray.Encoding
28−import Data.ByteString (ByteString)
29−import Data.ByteString.Builder (Builder)
30−import qualified Data.ByteString.Builder as Build
21+import qualified Data.ByteString.Lazy as LBS
31−import qualified Data.ByteString.Char8 as BS8
32−import qualified Data.ByteString.Lazy as LBS
33−import Data.Coerce
34−import Data.Default.Class (def)
35−import Data.List (intersperse)
36−import Data.String
37−import qualified Data.Text as Text
22+import qualified Data.Text as Text
38−import qualified Data.Text.Encoding as Text
39−import qualified Data.Text.Lazy as LText
40−import qualified Data.Text.Lazy.Builder as TBuild
41−import qualified Data.Text.Lazy.Encoding as LText
42−import Data.Time
43−import Data.Time.Clock.POSIX
44−import Data.Typeable
45−import Data.X509
46−import Data.X509.Memory
47−import Network.Google.Auth.ServiceAccount
48−import Network.Google.Compute.Metadata
23+import Network.Google.Compute.Metadata (isGCE)
49import Network.Google.Internal.Auth
24import Network.Google.Internal.Auth
50−import Network.Google.Internal.Logger
25+
51−import Network.Google.Prelude hiding (buildText)
26+
52−import Network.HTTP.Conduit hiding (Request)
27+import Network.HTTP.Conduit (Manager)
53−import qualified Network.HTTP.Conduit as Client
54−import Network.HTTP.Types
55−import System.Directory (doesFileExist,
28+import System.Directory (doesFileExist,
56− getHomeDirectory)
29+ getHomeDirectory)
57−import System.Environment (lookupEnv)
30+import System.Environment (lookupEnv)
58−import System.FilePath ((</>))
31+import System.FilePath ((</>))
59−import System.Info (os)
32+import System.Info (os)
60
33
61-- | The environment variable name which is used to specify the directory
34-- | The environment variable name which is used to specify the directory
62-- containing the @application_default_credentials.json@ generated by @gcloud init@.
35-- containing the @application_default_credentials.json@ generated by @gcloud init@.
gogol/src/Network/Google/Auth/InstalledApplication.hs+4−35
@@ -10,45 +10,14 @@
10
10
11module Network.Google.Auth.InstalledApplication where
11module Network.Google.Auth.InstalledApplication where
12
12
13−import Control.Applicative
13+import Control.Monad.Catch (MonadCatch)
14−import Control.Concurrent
15−import Control.Exception.Lens
16−import Control.Lens hiding (coerce, (.=))
17−import Control.Monad
18−import Control.Monad.Catch
19−import Control.Monad.IO.Class
14+import Control.Monad.IO.Class (MonadIO)
20−import Crypto.Hash.Algorithms (SHA256 (..))
21−import Crypto.PubKey.RSA.PKCS15 (signSafer)
22−import Crypto.PubKey.RSA.Types (PrivateKey)
23−import Data.Aeson
24−import Data.Aeson.Types
25−import Data.ByteArray
26−import Data.ByteArray.Encoding
27−import Data.ByteString (ByteString)
28−import Data.ByteString.Builder (Builder)
29−import qualified Data.ByteString.Builder as Build
30−import qualified Data.ByteString.Char8 as BS8
31−import qualified Data.ByteString.Lazy as LBS
32−import Data.Coerce
33−import Data.Default.Class (def)
34−import Data.List (intersperse)
35−import Data.String
36−import qualified Data.Text as Text
37import qualified Data.Text.Encoding as Text
15import qualified Data.Text.Encoding as Text
38−import qualified Data.Text.Lazy as LText
39−import qualified Data.Text.Lazy.Builder as TBuild
40−import qualified Data.Text.Lazy.Encoding as LText
41−import Data.Time
42−import Data.Time.Clock.POSIX
43−import Data.Typeable
44−import Data.X509
45−import Data.X509.Memory
46import Network.Google.Internal.Auth
16import Network.Google.Internal.Auth
47−import Network.Google.Internal.Logger
17+import Network.Google.Internal.Logger (Logger)
48import Network.Google.Prelude
18import Network.Google.Prelude
49−import Network.HTTP.Conduit hiding (Request)
19+import Network.HTTP.Conduit (Manager)
50import qualified Network.HTTP.Conduit as Client
20import qualified Network.HTTP.Conduit as Client
51−import Network.HTTP.Types
52
21
53-- | @urn:ietf:wg:oauth:2.0:oob@.
22-- | @urn:ietf:wg:oauth:2.0:oob@.
54redirectURI :: Text
23redirectURI :: Text
gogol/src/Network/Google/Auth/Scope.hs+36−75
@@ -1,20 +1,10 @@
1−{-# LANGUAGE ConstraintKinds #-}
2−{-# LANGUAGE DataKinds #-}
1+{-# LANGUAGE DataKinds #-}
3−{-# LANGUAGE DeriveDataTypeable #-}
2+{-# LANGUAGE ExplicitNamespaces #-}
4−{-# LANGUAGE DeriveGeneric #-}
5−{-# LANGUAGE FlexibleContexts #-}
6−{-# LANGUAGE FlexibleInstances #-}
7−{-# LANGUAGE FunctionalDependencies #-}
8−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
9−{-# LANGUAGE KindSignatures #-}
10−{-# LANGUAGE LambdaCase #-}
11−{-# LANGUAGE OverloadedStrings #-}
12−{-# LANGUAGE PolyKinds #-}
3+{-# LANGUAGE PolyKinds #-}
13−{-# LANGUAGE RecordWildCards #-}
14−{-# LANGUAGE ScopedTypeVariables #-}
4+{-# LANGUAGE ScopedTypeVariables #-}
15−{-# LANGUAGE TypeFamilies #-}
5+{-# LANGUAGE TypeFamilies #-}
16−{-# LANGUAGE TypeOperators #-}
6+{-# LANGUAGE TypeOperators #-}
17−{-# LANGUAGE UndecidableInstances #-}
7+{-# LANGUAGE UndecidableInstances #-}
18
8
19-- |
9-- |
20-- Module : Network.Google.Auth.Scope
10-- Module : Network.Google.Auth.Scope
@@ -28,46 +18,15 @@
28-- from the underlying OS.
18-- from the underlying OS.
29module Network.Google.Auth.Scope where
19module Network.Google.Auth.Scope where
30
20
31−import Control.Applicative
32−import Control.Concurrent
33−import Control.Exception.Lens
34−import Control.Lens hiding (coerce, (.=))
35−import Control.Monad
36−import Control.Monad.Catch
37−import Control.Monad.IO.Class
38−import Crypto.Hash.Algorithms (SHA256 (..))
39−import Crypto.PubKey.RSA.PKCS15 (signSafer)
40−import Crypto.PubKey.RSA.Types (PrivateKey)
41−import Data.Aeson
42−import Data.Aeson.Types
43−import Data.ByteArray
44−import Data.ByteArray.Encoding
45−import Data.ByteString (ByteString)
46−import Data.ByteString.Builder (Builder)
47−import qualified Data.ByteString.Builder as Build
48−import qualified Data.ByteString.Char8 as BS8
49−import qualified Data.ByteString.Lazy as LBS
50−import Data.Coerce
51−import Data.Default.Class (def)
52−import Data.List
53−import Data.String
54−import qualified Data.Text as Text
21+import qualified Data.Text as Text
55−import qualified Data.Text.Encoding as Text
56−import Data.Time
57−import Data.Time.Clock.POSIX
58−import Data.Type.Bool
22+import Data.Type.Bool (type (||))
59−import Data.Type.Equality
23+import Data.Type.Equality (type (==))
60−import Data.Typeable
24+import Data.Typeable (Proxy (..))
61−import Data.X509
62−import Data.X509.Memory
63−import GHC.Exts (Constraint)
25+import GHC.Exts (Constraint)
64−import GHC.TypeLits
26+import GHC.TypeLits (KnownSymbol, Symbol, symbolVal)
65−import Network.Google.Internal.Auth
27+import Network.Google.Internal.Auth (Credentials)
66−import Network.Google.Internal.Logger
67−import Network.Google.Prelude
28+import Network.Google.Prelude (GoogleRequest (Ss),
68−import Network.HTTP.Conduit hiding (Proxy)
29+ OAuthScope (..))
69−import qualified Network.HTTP.Conduit as Client
70−import Network.HTTP.Types
71
30
72-- | Type-restrict the supplied credentials/whatever to the specific scopes.
31-- | Type-restrict the supplied credentials/whatever to the specific scopes.
73--
32--
@@ -77,28 +36,34 @@ import Network.HTTP.Types
77-- This seems sufficiently general, does it already exist?
36-- This seems sufficiently general, does it already exist?
78--
37--
79-- /See:/ '(!)'.
38-- /See:/ '(!)'.
80−authorize :: proxy s -> k s -> k s
39+allow :: proxy s -> k s -> k s
81−authorize _ = id
40+allow _ = id
41+
42+-- | Append the type-level lists of two 'Proxy' values.
43+--
44+-- /See:/ 'allow'.
45+(!) :: proxy xs -> proxy ys -> Proxy (xs ++ ys)
46+(!) _ _ = Proxy
82
47
83-- | Determine if _any_ of the scopes a request requires is a subset
48-- | Determine if _any_ of the scopes a request requires is a subset
84-- of the scopes the credentials supports.
49-- of the scopes the credentials supports.
85type family Authorize (s :: [Symbol]) a :: Constraint where
50type family Authorize (s :: [Symbol]) a :: Constraint where
86− -- The use of 'HasScope' will show the reduced failing case,
87− -- and the use of '∈' will give the error context.
88− Authorize s a = HasScope (Ss a) s ∈ s
51+ Authorize s a = HasScope (Ss a ⊆ s) s
89
52
90-- | For error message/presentation purposes, this wraps the result of
53-- | For error message/presentation purposes, this wraps the result of
91−-- the existence checks below.
54+-- the membership checks below. When 'False fails to match, it will show
55+-- the reduced error case for '⊆' compared against the full
56+-- set of scopes the credentials ('s') have.
92−type family (∈) p s :: Constraint where
57+type family HasScope p s :: Constraint where
93− (∈) 'True s = ()
58+ HasScope 'True s = ()
94
59
95−type family HasScope a s where
60+type family (⊆) a s where
96− HasScope a (x ': xs) = Elem x a || HasScope a xs
61+ (⊆) a (x ': xs) = x ∈ a || a ⊆ xs
97
62
98−-- | Does 'a :: *' exist in 'b :: [*]'.
63+-- | Is 'a :: *' an element of 'b :: [*]'.
99−type family Elem a b where
64+type family (∈) a b where
100− Elem x '[] = 'False
65+ (∈) x '[] = 'False
101− Elem x (y ': xs) = x == y || Elem x xs
66+ (∈) x (y ': xs) = x == y || x ∈ xs
102
67
103-- | Type-level append.
68-- | Type-level append.
104type family (++) xs ys where
69type family (++) xs ys where
@@ -120,7 +85,3 @@ instance (KnownSymbol x, Allow xs) => Allow (x ': xs) where
120
85
121instance Allow s => Allow (Credentials s) where
86instance Allow s => Allow (Credentials s) where
122 getScopes _ = getScopes (Proxy :: Proxy s)
87 getScopes _ = getScopes (Proxy :: Proxy s)
123−
124−-- | Append the types of two 'Proxy' values.
125−(!) :: proxy xs -> proxy ys -> Proxy (xs ++ ys)
126−(!) _ _ = Proxy
gogol/src/Network/Google/Auth/ServiceAccount.hs+1−30
@@ -7,54 +7,25 @@
7-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
7-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
8-- Stability : provisional
8-- Stability : provisional
9-- Portability : non-portable (GHC extensions)
9-- Portability : non-portable (GHC extensions)
10−
10+--
11module Network.Google.Auth.ServiceAccount where
11module Network.Google.Auth.ServiceAccount where
12
12
13−import Control.Applicative
14−import Control.Concurrent
15−import Control.Exception.Lens
16−import Control.Lens hiding (coerce, (.=))
17−import Control.Monad
18import Control.Monad.Catch
13import Control.Monad.Catch
19import Control.Monad.IO.Class
14import Control.Monad.IO.Class
20import Crypto.Hash.Algorithms (SHA256 (..))
15import Crypto.Hash.Algorithms (SHA256 (..))
21import Crypto.PubKey.RSA.PKCS15 (signSafer)
16import Crypto.PubKey.RSA.PKCS15 (signSafer)
22−import Crypto.PubKey.RSA.Types (PrivateKey)
23import Data.Aeson
17import Data.Aeson
24−import Data.Aeson.Types
25−import Data.ByteArray
26−import Data.ByteArray.Encoding
27import Data.ByteString (ByteString)
18import Data.ByteString (ByteString)
28−import Data.ByteString.Builder (Builder)
29−import qualified Data.ByteString.Builder as Build
30import qualified Data.ByteString.Char8 as BS8
19import qualified Data.ByteString.Char8 as BS8
31−import qualified Data.ByteString.Lazy as LBS
32−import Data.Coerce
33−import Data.Default.Class (def)
34−import Data.List (intersperse)
35−import Data.String
36import qualified Data.Text as Text
20import qualified Data.Text as Text
37import qualified Data.Text.Encoding as Text
21import qualified Data.Text.Encoding as Text
38−import qualified Data.Text.Lazy as LText
39−import qualified Data.Text.Lazy.Builder as TBuild
40−import qualified Data.Text.Lazy.Encoding as LText
41−import Data.Time
42import Data.Time.Clock.POSIX
22import Data.Time.Clock.POSIX
43−import Data.Typeable
44−import Data.X509
45−import Data.X509.Memory
46import Network.Google.Compute.Metadata
23import Network.Google.Compute.Metadata
47import Network.Google.Internal.Auth
24import Network.Google.Internal.Auth
48import Network.Google.Internal.Logger
25import Network.Google.Internal.Logger
49import Network.Google.Prelude hiding (buildText)
26import Network.Google.Prelude hiding (buildText)
50import Network.HTTP.Conduit hiding (Request)
27import Network.HTTP.Conduit hiding (Request)
51import qualified Network.HTTP.Conduit as Client
28import qualified Network.HTTP.Conduit as Client
52−import Network.HTTP.Types
53−import System.Directory (doesFileExist,
54− getHomeDirectory)
55−import System.Environment (lookupEnv)
56−import System.FilePath ((</>))
57−import System.Info (os)
58
29
59-- | The maximum lifetime of a @service_account@ token which is 1 hour, in seconds.
30-- | The maximum lifetime of a @service_account@ token which is 1 hour, in seconds.
60maxTokenLifetime :: Seconds
31maxTokenLifetime :: Seconds
gogol/src/Network/Google/Compute/Metadata.hs+13−15
@@ -40,8 +40,8 @@ module Network.Google.Compute.Metadata
40 ) where
40 ) where
41
41
42import Control.Monad.Catch
42import Control.Monad.Catch
43−import Control.Monad.IO.Class
43+import Control.Monad.IO.Class (MonadIO (..))
44−import Data.Aeson
44+import Data.Aeson (eitherDecode')
45import Data.ByteString (ByteString)
45import Data.ByteString (ByteString)
46import qualified Data.ByteString.Lazy as LBS
46import qualified Data.ByteString.Lazy as LBS
47import Data.Char (toLower)
47import Data.Char (toLower)
@@ -49,12 +49,10 @@ import Data.Default.Class (def)
49import qualified Data.Text.Encoding as Text
49import qualified Data.Text.Encoding as Text
50import qualified Data.Text.Lazy as LText
50import qualified Data.Text.Lazy as LText
51import qualified Data.Text.Lazy.Encoding as LText
51import qualified Data.Text.Lazy.Encoding as LText
52−import Network.Google.Prelude
52+import Network.Google.Prelude (Text, (<>))
53−import Network.HTTP.Conduit (HttpException (..), Manager, httpLbs,
53+import Network.HTTP.Conduit (HttpException (..), Manager)
54− responseBody, responseHeaders,
55− responseStatus)
56import qualified Network.HTTP.Conduit as Client
54import qualified Network.HTTP.Conduit as Client
57−import Network.HTTP.Types
55+import Network.HTTP.Types (HeaderName)
58import System.Environment (lookupEnv)
56import System.Environment (lookupEnv)
59
57
60-- | @NO_GCE_CHECK@.
58-- | @NO_GCE_CHECK@.
@@ -77,15 +75,15 @@ isGCE :: MonadIO m => Manager -> m Bool
77isGCE m = liftIO $ do
75isGCE m = liftIO $ do
78 p <- check <$> lookupEnv checkGCEVar
76 p <- check <$> lookupEnv checkGCEVar
79 if p
77 if p
80− then (success <$> httpLbs rq m) `catch` failure
78+ then (success <$> Client.httpLbs rq m) `catch` failure
81 else pure False
79 else pure False
82 where
80 where
83 check Nothing = True
81 check Nothing = True
84 check (Just x) = map toLower x `notElem` ["1", "true", "yes", "on"]
82 check (Just x) = map toLower x `notElem` ["1", "true", "yes", "on"]
85
83
86 success rs =
84 success rs =
87− fromEnum (responseStatus rs) == 200
85+ fromEnum (Client.responseStatus rs) == 200
88− && (lookup metadataFlavorHeader (responseHeaders rs)
86+ && (lookup metadataFlavorHeader (Client.responseHeaders rs)
89 == Just metadataFlavorDesired)
87 == Just metadataFlavorDesired)
90
88
91 failure :: HttpException -> IO Bool
89 failure :: HttpException -> IO Bool
@@ -153,7 +151,7 @@ getMachineType = metadataText "instance/machine-type"
153getTags :: MonadIO m => Manager -> m [Text]
151getTags :: MonadIO m => Manager -> m [Text]
154getTags m = do
152getTags m = do
155 rs <- metadata "instance/tags" [] m
153 rs <- metadata "instance/tags" [] m
156− case eitherDecode' (responseBody rs) of
154+ case eitherDecode' (Client.responseBody rs) of
157 Left _ -> pure []
155 Left _ -> pure []
158 Right xs -> pure xs
156 Right xs -> pure xs
159
157
@@ -208,15 +206,15 @@ metadataMaybe :: MonadIO m
208 -> m (Maybe LBS.ByteString)
206 -> m (Maybe LBS.ByteString)
209metadataMaybe path m = do
207metadataMaybe path m = do
210 rs <- metadata path [404] m
208 rs <- metadata path [404] m
211− if fromEnum (responseStatus rs) == 404
209+ if fromEnum (Client.responseStatus rs) == 404
212 then pure Nothing
210 then pure Nothing
213− else pure $ Just (responseBody rs)
211+ else pure $ Just (Client.responseBody rs)
214
212
215metadataText :: MonadIO m
213metadataText :: MonadIO m
216 => ByteString
214 => ByteString
217 -> Manager
215 -> Manager
218 -> m Text
216 -> m Text
219−metadataText path m = LText.toStrict . LText.decodeUtf8 . responseBody
217+metadataText path m = LText.toStrict . LText.decodeUtf8 . Client.responseBody
220 <$> metadata path [] m
218 <$> metadata path [] m
221
219
222metadata :: MonadIO m
220metadata :: MonadIO m
@@ -225,7 +223,7 @@ metadata :: MonadIO m
225 -> Manager
223 -> Manager
226 -> m (Client.Response LBS.ByteString)
224 -> m (Client.Response LBS.ByteString)
227metadata path ss m =
225metadata path ss m =
228− liftIO . flip httpLbs m $ metadataRequest
226+ liftIO . flip Client.httpLbs m $ metadataRequest
229 { Client.path = "/computeMetadata/v1/" <> path
227 { Client.path = "/computeMetadata/v1/" <> path
230 , Client.checkStatus = \s hs cj ->
228 , Client.checkStatus = \s hs cj ->
231 let c = fromEnum s
229 let c = fromEnum s
gogol/src/Network/Google/Env.hs+8−10
@@ -15,17 +15,15 @@
15-- Environment and Google specific configuration for the 'Network.Google' monad.
15-- Environment and Google specific configuration for the 'Network.Google' monad.
16module Network.Google.Env where
16module Network.Google.Env where
17
17
18−import Control.Lens
18+import Control.Lens (Lens', lens, (<>~), (?~))
19−import Control.Monad.Catch
19+import Control.Monad.Catch (MonadCatch)
20−import Control.Monad.IO.Class
20+import Control.Monad.IO.Class (MonadIO (..))
21−import Control.Monad.Reader
21+import Control.Monad.Reader (MonadReader (local))
22−import Data.Function (on)
22+import Data.Function (on)
23−import Data.Monoid
23+import Data.Monoid (Dual (..), Endo (..))
24−import GHC.TypeLits
24+import GHC.TypeLits (Symbol)
25import Network.Google.Auth
25import Network.Google.Auth
26−import Network.Google.Auth.ApplicationDefault
26+import Network.Google.Internal.Logger (Logger)
27−import Network.Google.Internal.Auth
28−import Network.Google.Internal.Logger
29import Network.Google.Types
27import Network.Google.Types
30import Network.HTTP.Conduit
28import Network.HTTP.Conduit
31
29
gogol/src/Network/Google/Internal/Auth.hs+26−47
@@ -7,11 +7,7 @@
7{-# LANGUAGE KindSignatures #-}
7{-# LANGUAGE KindSignatures #-}
8{-# LANGUAGE LambdaCase #-}
8{-# LANGUAGE LambdaCase #-}
9{-# LANGUAGE OverloadedStrings #-}
9{-# LANGUAGE OverloadedStrings #-}
10−{-# LANGUAGE PolyKinds #-}
11{-# LANGUAGE ScopedTypeVariables #-}
10{-# LANGUAGE ScopedTypeVariables #-}
12−{-# LANGUAGE TypeFamilies #-}
13−{-# LANGUAGE TypeOperators #-}
14−{-# LANGUAGE UndecidableInstances #-}
15
11
16-- |
12-- |
17-- Module : Network.Google.Internal.Auth
13-- Module : Network.Google.Internal.Auth
@@ -23,51 +19,34 @@
23
19
24module Network.Google.Internal.Auth where
20module Network.Google.Internal.Auth where
25
21
26−import Control.Applicative
22+import Control.Exception.Lens (exception)
27−import Control.Concurrent
28−import Control.Exception.Lens
29−import Control.Lens hiding (coerce, (.=))
23+import Control.Lens (Prism', prism, (<&>))
30−import Control.Monad
31import Control.Monad.Catch
24import Control.Monad.Catch
32−import Control.Monad.IO.Class
25+import Control.Monad.IO.Class (MonadIO (..))
33−import Crypto.Hash.Algorithms (SHA256 (..))
34−import Crypto.PubKey.RSA.PKCS15 (signSafer)
35−import Crypto.PubKey.RSA.Types (PrivateKey)
26+import Crypto.PubKey.RSA.Types (PrivateKey)
36import Data.Aeson
27import Data.Aeson
37−import Data.Aeson.Types
28+import Data.Aeson.Types (Pair)
38−import Data.ByteArray
29+import Data.ByteArray (ByteArray)
39import Data.ByteArray.Encoding
30import Data.ByteArray.Encoding
40−import Data.ByteString (ByteString)
31+import Data.ByteString (ByteString)
41−import Data.ByteString.Builder (Builder)
32+import Data.ByteString.Builder ()
42−import qualified Data.ByteString.Builder as Build
43−import qualified Data.ByteString.Char8 as BS8
33+import qualified Data.ByteString.Char8 as BS8
44−import qualified Data.ByteString.Lazy as LBS
34+import qualified Data.ByteString.Lazy as LBS
45−import Data.Coerce
35+import Data.Coerce (coerce)
46−import Data.Default.Class (def)
36+import Data.Default.Class (def)
47−import Data.List (intersperse)
37+import Data.String (IsString)
48−import Data.Monoid
49−import Data.String
50−import Data.Text (Text)
51−import qualified Data.Text as Text
38+import qualified Data.Text as Text
52−import qualified Data.Text.Encoding as Text
39+import qualified Data.Text.Encoding as Text
53−import qualified Data.Text.Lazy as LText
54−import qualified Data.Text.Lazy.Builder as TBuild
55−import qualified Data.Text.Lazy.Encoding as LText
56import Data.Time
40import Data.Time
57−import Data.Time.Clock.POSIX
41+import Data.X509 (PrivKey (..))
58−import Data.Type.Bool
59−import Data.Type.Equality
60−import Data.Typeable
61−import Data.X509
62−import Data.X509.Memory
42+import Data.X509.Memory (readKeyFileFromMemory)
63−import GHC.Exts (Constraint)
64−import GHC.TypeLits
43+import GHC.TypeLits (Symbol)
65−import Network.Google.Compute.Metadata
66import Network.Google.Internal.Logger
44import Network.Google.Internal.Logger
67import Network.Google.Prelude
45import Network.Google.Prelude
68−import Network.HTTP.Conduit hiding (Proxy, Request)
46+import Network.HTTP.Conduit (HttpException, Manager)
69−import qualified Network.HTTP.Conduit as Client
47+import qualified Network.HTTP.Conduit as Client
70−import Network.HTTP.Types
48+import Network.HTTP.Types (Status, hContentType,
49+ urlEncode)
71
50
72-- | The supported credential mechanisms.
51-- | The supported credential mechanisms.
73data Credentials (s :: [Symbol])
52data Credentials (s :: [Symbol])
@@ -294,10 +273,10 @@ refreshRequest :: (MonadIO m, MonadCatch m)
294refreshRequest rq l m = do
273refreshRequest rq l m = do
295 logDebug l rq -- debug:ClientRequest
274 logDebug l rq -- debug:ClientRequest
296
275
297− rs <- liftIO (httpLbs rq m) `catch` (throwM . RetrievalError)
276+ rs <- liftIO (Client.httpLbs rq m) `catch` (throwM . RetrievalError)
298
277
299− let bs = responseBody rs
278+ let bs = Client.responseBody rs
300− s = responseStatus rs
279+ s = Client.responseStatus rs
301
280
302 logDebug l rs -- debug:ClientResponse
281 logDebug l rs -- debug:ClientResponse
303 logTrace l $ "[Response Body]\n" <> bs -- trace:ResponseBody
282 logTrace l $ "[Response Body]\n" <> bs -- trace:ResponseBody
@@ -351,4 +330,4 @@ concatScopes :: [OAuthScope] -> Text
351concatScopes = Text.intercalate " " . coerce
330concatScopes = Text.intercalate " " . coerce
352
331
353textBody :: Text -> RequestBody
332textBody :: Text -> RequestBody
354−textBody = RequestBodyBS . Text.encodeUtf8
333+textBody = Client.RequestBodyBS . Text.encodeUtf8
gogol/src/Network/Google/Internal/Body.hs+3−3
@@ -7,9 +7,9 @@
7-- Portability : non-portable (GHC extensions)
7-- Portability : non-portable (GHC extensions)
8module Network.Google.Internal.Body where
8module Network.Google.Internal.Body where
9
9
10−import Control.Monad.IO.Class
10+import Control.Monad.IO.Class (MonadIO (..))
11−import Data.Conduit.Binary
11+import Data.Conduit.Binary (sourceFile)
12−import Network.HTTP.Conduit
12+import Network.HTTP.Conduit (RequestBody, requestBodySource)
13import System.IO
13import System.IO
14
14
15-- | Convenience function for obtaining the size of a file.
15-- | Convenience function for obtaining the size of a file.
gogol/src/Network/Google/Internal/HTTP.hs+8−9
@@ -15,25 +15,24 @@
15--
15--
16module Network.Google.Internal.HTTP where
16module Network.Google.Internal.HTTP where
17
17
18−import Control.Lens
18+import Control.Lens ((%~), (&))
19import Control.Monad.Catch
19import Control.Monad.Catch
20−import Control.Monad.IO.Class
20+import Control.Monad.IO.Class (MonadIO)
21−import Control.Monad.Trans.Resource
21+import Control.Monad.Trans.Resource (MonadResource (..))
22−import Data.Default.Class
22+import Data.Default.Class (Default (..))
23−import Data.Monoid
23+import Data.Monoid (Dual (..), Endo (..), (<>))
24import qualified Data.Text.Encoding as Text
24import qualified Data.Text.Encoding as Text
25import qualified Data.Text.Lazy as LText
25import qualified Data.Text.Lazy as LText
26import qualified Data.Text.Lazy.Builder as Build
26import qualified Data.Text.Lazy.Builder as Build
27import GHC.Exts (toList)
27import GHC.Exts (toList)
28−import GHC.TypeLits
29−import Network.Google.Auth
28+import Network.Google.Auth (Allow, authorize)
30import Network.Google.Env (Env (..))
29import Network.Google.Env (Env (..))
31−import Network.Google.Internal.Logger
30+import Network.Google.Internal.Logger (logDebug)
32import Network.Google.Internal.Multipart
31import Network.Google.Internal.Multipart
33import Network.Google.Types
32import Network.Google.Types
34import qualified Network.HTTP.Client.Conduit as Client
33import qualified Network.HTTP.Client.Conduit as Client
35import Network.HTTP.Conduit
34import Network.HTTP.Conduit
36−import Network.HTTP.Media
35+import Network.HTTP.Media (RenderHeader (..))
37import Network.HTTP.Types
36import Network.HTTP.Types
38
37
39-- FIXME: "mediaType" param also comes/calculated from the request body?
38-- FIXME: "mediaType" param also comes/calculated from the request body?
gogol/src/Network/Google/Internal/Logger.hs+5−6
@@ -32,8 +32,8 @@ module Network.Google.Internal.Logger
32 , buildLines
32 , buildLines
33 ) where
33 ) where
34
34
35−import Control.Monad
35+import Control.Monad (when)
36−import Control.Monad.IO.Class
36+import Control.Monad.IO.Class (MonadIO (..))
37import Data.ByteString (ByteString)
37import Data.ByteString (ByteString)
38import qualified Data.ByteString as BS
38import qualified Data.ByteString as BS
39import Data.ByteString.Builder (Builder)
39import Data.ByteString.Builder (Builder)
@@ -42,18 +42,17 @@ import qualified Data.ByteString.Lazy as LBS
42import qualified Data.ByteString.Lazy.Builder as Build
42import qualified Data.ByteString.Lazy.Builder as Build
43import Data.CaseInsensitive (CI)
43import Data.CaseInsensitive (CI)
44import qualified Data.CaseInsensitive as CI
44import qualified Data.CaseInsensitive as CI
45−import Data.Int
45+import Data.Int (Int16, Int8)
46import Data.List (intersperse)
46import Data.List (intersperse)
47−import Data.Monoid
48import qualified Data.Text as Text
47import qualified Data.Text as Text
49import qualified Data.Text.Encoding as Text
48import qualified Data.Text.Encoding as Text
50import qualified Data.Text.Lazy as LText
49import qualified Data.Text.Lazy as LText
51import qualified Data.Text.Lazy.Encoding as LText
50import qualified Data.Text.Lazy.Encoding as LText
52−import Data.Word
51+import Data.Word (Word16)
53import Network.Google.Prelude hiding (Header, Request)
52import Network.Google.Prelude hiding (Header, Request)
54import Network.HTTP.Conduit
53import Network.HTTP.Conduit
55import Network.HTTP.Types
54import Network.HTTP.Types
56−import Numeric
55+import Numeric (showFFloat)
57import System.IO
56import System.IO
58
57
59-- | A function threaded through various request and serialisation routines
58-- | A function threaded through various request and serialisation routines
gogol/src/Network/Google/Internal/Multipart.hs+8−8
@@ -10,17 +10,17 @@
10--
10--
11module Network.Google.Internal.Multipart where
11module Network.Google.Internal.Multipart where
12
12
13−import Control.Monad.IO.Class
13+import Control.Monad.IO.Class (MonadIO (..))
14import Data.ByteString (ByteString)
14import Data.ByteString (ByteString)
15−import qualified Data.ByteString as BS
15+import qualified Data.ByteString as BS
16−import Data.ByteString.Builder.Extra
16+import Data.ByteString.Builder.Extra (byteStringCopy)
17−import qualified Data.CaseInsensitive as CI
17+import qualified Data.CaseInsensitive as CI
18−import Data.Monoid
18+import Data.Monoid ((<>))
19−import Network.Google.Types
19+import Network.Google.Types (Part (..))
20import Network.HTTP.Client
20import Network.HTTP.Client
21import Network.HTTP.Client.MultipartFormData (webkitBoundary)
21import Network.HTTP.Client.MultipartFormData (webkitBoundary)
22−import Network.HTTP.Media
22+import Network.HTTP.Media (RenderHeader(..))
23−import Network.HTTP.Types
23+import Network.HTTP.Types (Header, hContentType)
24
24
25-- POST /upload/drive/v2/files?uploadType=multipart HTTP/1.1
25-- POST /upload/drive/v2/files?uploadType=multipart HTTP/1.1
26-- Host: www.googleapis.com
26-- Host: www.googleapis.com