on develop help sign in
Tweaking layout and top-level interface
commit8124131d03ac5cd3389f6d49eadf282f2ffeacc8 authorBrendan Hay <brendan.g.hay@gmail.com> dateMon 12 Oct 2015, 13:37 (11 years ago) parent847dacf
8 files changed+45−72
core/gogol-core.cabal+3−3 core/src/Network/Google/Types.hs+4 gogol/gogol.cabal+14−18 gogol/src/Network/Google.hs+16−9 gogol/src/Network/Google/Auth.hs+1−2 gogol/src/Network/Google/Env.hs+1−7 gogol/src/Network/Google/Internal/HTTP.hs+6−17 gogol/src/Network/Google/Internal/Types.hs−16
core/gogol-core.cabal+3−3
@@ -48,12 +48,12 @@ library
4848 , bytestring >= 0.9
4949 , conduit >= 1.1
5050 , dlist >= 0.7
51− , case-insensitive
51+ , case-insensitive >= 1.2
5252 , exceptions >= 0.6
5353 , hashable >= 1.2
5454 , http-client >= 0.4.4
55− , http-media >= 0.4
56− , http-types >= 0.8
55+ , http-media >= 0.6
56+ , http-types >= 0.8.6
5757 , lens >= 4.4
5858 , resourcet >= 1.1
5959 , scientific >= 0.3
core/src/Network/Google/Types.hs+4
@@ -22,6 +22,7 @@
2222--
2323module Network.Google.Types where
2424
25+import Control.Exception.Lens (exception)
2526import Control.Lens hiding (coerce)
2627import Control.Monad
2728import Control.Monad.Catch
@@ -142,6 +143,9 @@ class AsError a where
142143 _SerializeError = _Error . _SerializeError
143144 _ServiceError = _Error . _ServiceError
144145
146+instance AsError SomeException where
147+ _Error = exception
148+
145149instance AsError Error where
146150 _Error = id
147151
gogol/gogol.cabal+14−18
@@ -28,29 +28,25 @@ library
2828
2929 exposed-modules:
3030 Network.Google
31− Network.Google.Auth
32− Network.Google.Env
31+ , Network.Google.Auth
32+ , Network.Google.Env
3333
3434 other-modules:
3535 Network.Google.Internal.HTTP
36− , Network.Google.Internal.Types
3736
3837 build-depends:
3938 base >= 4.7 && < 5
40− , bifunctors
41− , conduit
39+ , conduit >= 1.1
4240 , data-default-class >= 0.0.1
43− , exceptions
41+ , exceptions >= 0.6
4442 , gogol-core == 0.0.1.*
45− , http-conduit
46− , http-media
47− , http-types
48− , lens
49− , mmorph
50− , monad-control
51− , mtl
52− , resourcet
53− , text
54− , time
55− , transformers
56− , transformers-base
43+ , http-conduit >= 2.1.4
44+ , http-media >= 0.6
45+ , http-types >= 0.8.6
46+ , lens >= 4.4
47+ , monad-control >= 1
48+ , mtl >= 2.1.3.1
49+ , resourcet >= 1.1
50+ , text >= 1.1
51+ , transformers >= 0.2
52+ , transformers-base >= 0.4
gogol/src/Network/Google.hs+16−9
@@ -17,16 +17,15 @@
1717module Network.Google where
1818
1919import Control.Applicative
20+import Control.Exception.Lens (throwingM)
2021import Control.Monad
2122import Control.Monad.Base
2223import Control.Monad.Catch
23−import Control.Monad.IO.Class (MonadIO)
2424import Control.Monad.Reader
2525import qualified Control.Monad.RWS.Lazy as LRW
2626import qualified Control.Monad.RWS.Strict as RW
2727import qualified Control.Monad.State.Lazy as LS
2828import qualified Control.Monad.State.Strict as S
29−import Control.Monad.Trans.Class (lift)
3029import Control.Monad.Trans.Control
3130import Control.Monad.Trans.Except (ExceptT)
3231import Control.Monad.Trans.Identity (IdentityT)
@@ -35,8 +34,8 @@ import Control.Monad.Trans.Maybe (MaybeT)
3534import Control.Monad.Trans.Resource
3635import qualified Control.Monad.Writer.Lazy as LW
3736import qualified Control.Monad.Writer.Strict as W
38−import Network.Google.Auth
3937import Network.Google.Env
38+import Network.Google.Internal.HTTP
4039import Network.Google.Prelude
4140
4241newtype Google a = Google { unGoogle :: ReaderT Env (ResourceT IO) a }
@@ -94,11 +93,19 @@ instance (Monoid w, MonadGoogle m) => MonadGoogle (RW.RWST r w s m) where
9493instance (Monoid w, MonadGoogle m) => MonadGoogle (LRW.RWST r w s m) where
9594 liftGoogle = lift . liftGoogle
9695
97−runGoogle :: MonadResource m => Env -> Google a -> m a
98−runGoogle e m = liftResourceT $ runReaderT (unGoogle m) e -- (e ^. environment)
96+runGoogle :: (MonadResource m, HasEnv r) => r -> Google a -> m a
97+runGoogle e m = liftResourceT $ runReaderT (unGoogle m) (e ^. environment)
9998
100−send :: GoogleRequest a => a -> m (Rs a)
101−send = undefined
99+send :: (MonadGoogle m, GoogleRequest a) => a -> m (Rs a)
100+send x = liftGoogle $ do
101+ e <- ask
102+ r <- perform e x
103+ hoistError r
102104
103−-- download :: GoogleRequest (MediaDownload a) => a -> m (Rs (MediaDownload a))
104−-- download = send . MediaDownload
105+media :: (MonadGoogle m, GoogleRequest (MediaDownload a))
106+ => a
107+ -> m (Rs (MediaDownload a))
108+media = send . MediaDownload
109+
110+hoistError :: MonadThrow m => Either Error a -> m a
111+hoistError = either (throwingM _Error) return
gogol/src/Network/Google/Auth.hs+1−2
@@ -15,8 +15,7 @@ module Network.Google.Auth where
1515import Control.Concurrent (ThreadId)
1616import Control.Monad.IO.Class
1717import Data.IORef
18−import Data.Time
19−import Network.Google.Types
18+import Network.Google.Prelude
2019
2120data Credentials
2221 = FromKey AuthKey
gogol/src/Network/Google/Env.hs+1−7
@@ -9,22 +9,16 @@
99-- Environment and Google specific configuration for the 'Network.Google' monad.
1010module Network.Google.Env where
1111
12−import Control.Applicative
1312import Control.Lens
14−import Control.Monad
1513import Control.Monad.Catch
1614import Control.Monad.IO.Class
1715import Control.Monad.Reader
18−import Data.Monoid
1916import Network.Google.Auth
20−import Network.Google.Internal.Types
2117import Network.Google.Types
2218import Network.HTTP.Conduit
2319
2420-- | The environment containing the parameters required to make Google requests.
2521data Env = Env
26− -- { _envRetryCheck :: !(Int -> HttpException -> Bool)
27− -- , _envRetryPolicy :: !RetryPolicy
2822 { _envTimeout :: !(Maybe Seconds)
2923 , _envManager :: !Manager
3024 , _envAuth :: !Auth
@@ -73,7 +67,7 @@ timeout s = local (envTimeout ?~ s)
7367--
7468-- /See:/ 'newEnvWith'.
7569newEnv :: (MonadIO m, MonadCatch m) => Credentials -> m Env
76−newEnv c = liftIO (newManager conduitManagerSettings) >>= newEnvWith c
70+newEnv c = liftIO (newManager tlsManagerSettings) >>= newEnvWith c
7771
7872-- | /See:/ 'newEnv'
7973newEnvWith :: (MonadIO m, MonadCatch m) => Credentials -> Manager -> m Env
gogol/src/Network/Google/Internal/HTTP.hs+6−17
@@ -12,29 +12,18 @@
1212module Network.Google.Internal.HTTP where
1313
1414import Control.Applicative
15−import Control.Lens
16−import Control.Monad
1715import Control.Monad.Catch
18−import Control.Monad.IO.Class
19−import Control.Monad.Morph
20−import Data.Bifunctor
21−-- import Control.Monad.State.Lazy
2216import Control.Monad.Trans.Resource
23−import Control.Retry
24−import Data.Conduit
2517import Data.Default.Class
2618import Data.Monoid
27−import qualified Data.Text as Text
28−import qualified Data.Text.Encoding as Text
29−import qualified Data.Text.Lazy as LText
30−import qualified Data.Text.Lazy.Builder as Build
31−import GHC.Exts (toList)
32−import Network.Google.Auth
33−import Network.Google.Env (Env (..))
34−import Network.Google.Internal.Types
19+import qualified Data.Text.Encoding as Text
20+import qualified Data.Text.Lazy as LText
21+import qualified Data.Text.Lazy.Builder as Build
22+import GHC.Exts (toList)
23+import Network.Google.Env (Env (..))
3524import Network.Google.Types
3625import Network.HTTP.Conduit
37−import qualified Network.HTTP.Conduit as Client
26+import qualified Network.HTTP.Conduit as Client
3827import Network.HTTP.Media
3928import Network.HTTP.Types
4029
gogol/src/Network/Google/Internal/Types.hsdeleted−16
@@ -1,16 +0,0 @@
1−{-# LANGUAGE DeriveDataTypeable #-}
2−{-# LANGUAGE DeriveGeneric #-}
3−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
4−
5−-- |
6−-- Module : Network.Google.Env
7−-- Copyright : (c) 2015 Brendan Hay
8−-- License : Mozilla Public License, v. 2.0.
9−-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
10−-- Stability : provisional
11−-- Portability : non-portable (GHC extensions)
12−--
13−module Network.Google.Internal.Types where
14−
15−import Data.Data
16−import GHC.Generics