@@ -24,37 +24,41 @@
2424--
2525module Network.Google.Types where
2626
27−import Control.Applicative
28−import Control.Exception.Lens (exception)
29−import Control.Lens
30−import Control.Monad.Catch
31−import Control.Monad.Trans.Resource
32−import Data.Aeson
33−import Data.ByteString (ByteString)
34−import qualified Data.ByteString.Char8 as BS8
35−import qualified Data.ByteString.Lazy as LBS
36−import qualified Data.CaseInsensitive as CI
37−import Data.Coerce
38−import Data.Conduit
39−import qualified Data.Conduit.List as CL
40−import Data.Data
41−import Data.DList (DList)
42−import qualified Data.DList as DList
43−import Data.Foldable (foldMap, foldl')
44−import Data.Monoid
45−import Data.String
46−import Data.Text (Text)
47−import qualified Data.Text.Encoding as Text
48−import Data.Text.Lazy.Builder (Builder)
49−import qualified Data.Text.Lazy.Builder as Build
50−import GHC.Generics
51−import GHC.TypeLits
52−import Network.HTTP.Client (HttpException, RequestBody (..))
53−import Network.HTTP.Media hiding (Accept)
54−import Network.HTTP.Types hiding (Header)
55−import qualified Network.HTTP.Types as HTTP
56−import Servant.API hiding (Stream)
57−import Web.HttpApiData
27+import Control.Applicative
28+import Control.Exception.Lens (exception)
29+import Control.Lens
30+import Control.Monad.Catch
31+import Control.Monad.Trans.Resource
32+
33+import Data.Aeson
34+import Data.ByteString (ByteString)
35+import Data.Coerce
36+import Data.Conduit
37+import Data.Data
38+import Data.DList (DList)
39+import Data.Foldable (foldMap, foldl')
40+import Data.Monoid
41+import Data.String
42+import Data.Text (Text)
43+import Data.Text.Lazy.Builder (Builder)
44+
45+import GHC.Generics
46+import GHC.TypeLits
47+
48+import Network.HTTP.Client (HttpException, RequestBody (..))
49+import Network.HTTP.Media hiding (Accept)
50+import Network.HTTP.Types hiding (Header)
51+
52+import Servant.API hiding (Stream)
53+
54+import qualified Data.ByteString.Char8 as BS8
55+import qualified Data.ByteString.Lazy as LBS
56+import qualified Data.CaseInsensitive as CI
57+import qualified Data.Conduit.Combinators as Conduit
58+import qualified Data.DList as DList
59+import qualified Data.Text.Encoding as Text
60+import qualified Data.Text.Lazy.Builder as Build
61+import qualified Network.HTTP.Types as HTTP
5862
5963data AltJSON = AltJSON deriving (Eq, Ord, Show, Read, Generic, Typeable)
6064data AltMedia = AltMedia deriving (Eq, Ord, Show, Read, Generic, Typeable)
@@ -163,7 +167,8 @@ instance Show Secret where
163167 show = const "*****"
164168
165169newtype MediaDownload a = MediaDownload a
166−data MediaUpload a = MediaUpload a Body
170+
171+data MediaUpload a = MediaUpload a Body
167172
168173_Coerce :: (Coercible a b, Coercible b a) => Iso' a b
169174_Coerce = iso coerce coerce
@@ -176,7 +181,7 @@ _Default = iso f Just
176181 f (Just x) = x
177182 f Nothing = mempty
178183
179−type Stream = ResumableSource (ResourceT IO) ByteString
184+type Stream = ConduitM () ByteString (ResourceT IO) ()
180185
181186data Error
182187 = TransportError HttpException
@@ -358,7 +363,7 @@ discard :: Method
358363 -> Request
359364 -> ServiceConfig
360365 -> Client ()
361−discard = client (\b -> closeResumableSource b >> pure (Right ())) Nothing
366+discard = client (\b -> runConduit (b .| Conduit.sinkNull) >> pure (Right ())) Nothing
362367
363368client :: (Stream -> ResourceT IO (Either (String, LBS.ByteString) a))
364369 -> Maybe MediaType
@@ -367,10 +372,10 @@ client :: (Stream -> ResourceT IO (Either (String, LBS.ByteString) a))
367372 -> Request
368373 -> ServiceConfig
369374 -> Client a
370−client f cs m ns rq s = Client
375+client f cs m statuses rq s = Client
371376 { _cliAccept = cs
372377 , _cliMethod = m
373− , _cliCheck = (`elem` ns) . fromEnum
378+ , _cliCheck = \status -> fromEnum status `elem` statuses
374379 , _cliService = s
375380 , _cliRequest = rq
376381 , _cliResponse = f
@@ -600,7 +605,7 @@ instance {-# OVERLAPPING #-}
600605 buildClient Proxy = discard methodDelete [204]
601606
602607sinkLBS :: Stream -> ResourceT IO LBS.ByteString
603−sinkLBS = fmap LBS.fromChunks . ($$+- CL.consume)
608+sinkLBS = runConduit . (.| Conduit.sinkLazy)
604609
605610buildText :: ToHttpApiData a => a -> Builder
606611buildText = Build.fromText . toQueryParam