gogol-core 0.5.0 → 1.0.0.0
raw patch · 14 files changed
+1062/−1127 lines, 14 filesdep +base64dep −bifunctorsdep −natsdep −old-localedep ~aesondep ~attoparsecdep ~basesetup-changedPVP ok
version bump matches the API change (PVP)
Dependencies added: base64
Dependencies removed: bifunctors, nats, old-locale
Dependency ranges changed: aeson, attoparsec, base, bytestring, case-insensitive, conduit, dlist, exceptions, hashable, http-api-data, http-media, http-types, lens, resourcet, scientific, servant, text, time, unordered-containers
API changes (from Hackage documentation)
- Network.Google.Data.Bytes: Bytes :: ByteString -> Bytes
- Network.Google.Data.Bytes: [unBytes] :: Bytes -> ByteString
- Network.Google.Data.Bytes: _Bytes :: Iso' Bytes ByteString
- Network.Google.Data.Bytes: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance Data.Data.Data Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance Data.Hashable.Class.Hashable Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance GHC.Classes.Eq Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance GHC.Classes.Ord Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance GHC.Generics.Generic Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance GHC.Read.Read Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance GHC.Show.Show Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Bytes.Bytes
- Network.Google.Data.Bytes: newtype Bytes
- Network.Google.Data.JSON: (.!=) :: () => Parser (Maybe a) -> a -> Parser a
- Network.Google.Data.JSON: (.:) :: FromJSON a => Object -> Text -> Parser a
- Network.Google.Data.JSON: (.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a)
- Network.Google.Data.JSON: (.=) :: (KeyValue kv, ToJSON v) => Text -> v -> kv
- Network.Google.Data.JSON: Textual :: a -> Textual a
- Network.Google.Data.JSON: class FromJSON a
- Network.Google.Data.JSON: class ToJSON a
- Network.Google.Data.JSON: emptyObject :: Value
- Network.Google.Data.JSON: infixr 8 .=
- Network.Google.Data.JSON: instance (Data.Aeson.Types.FromJSON.FromJSON a, Web.Internal.HttpApiData.FromHttpApiData a) => Data.Aeson.Types.FromJSON.FromJSON (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance Data.Data.Data a => Data.Data.Data (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance GHC.Classes.Eq a => GHC.Classes.Eq (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance GHC.Classes.Ord a => GHC.Classes.Ord (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance GHC.Num.Num a => GHC.Num.Num (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance GHC.Read.Read a => GHC.Read.Read (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance GHC.Real.Fractional a => GHC.Real.Fractional (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance GHC.Show.Show a => GHC.Show.Show (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance Web.Internal.HttpApiData.FromHttpApiData a => Web.Internal.HttpApiData.FromHttpApiData (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance Web.Internal.HttpApiData.ToHttpApiData a => Data.Aeson.Types.ToJSON.ToJSON (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: instance Web.Internal.HttpApiData.ToHttpApiData a => Web.Internal.HttpApiData.ToHttpApiData (Network.Google.Data.JSON.Textual a)
- Network.Google.Data.JSON: newtype Textual a
- Network.Google.Data.JSON: object :: [Pair] -> Value
- Network.Google.Data.JSON: parseJSON :: FromJSON a => Value -> Parser a
- Network.Google.Data.JSON: parseJSONList :: FromJSON a => Value -> Parser [a]
- Network.Google.Data.JSON: parseJSONObject :: FromJSON a => HashMap Text Value -> Parser a
- Network.Google.Data.JSON: parseJSONText :: FromHttpApiData a => String -> Value -> Parser a
- Network.Google.Data.JSON: toEncoding :: ToJSON a => a -> Encoding
- Network.Google.Data.JSON: toEncodingList :: ToJSON a => [a] -> Encoding
- Network.Google.Data.JSON: toJSON :: ToJSON a => a -> Value
- Network.Google.Data.JSON: toJSONList :: ToJSON a => [a] -> Value
- Network.Google.Data.JSON: toJSONText :: ToHttpApiData a => a -> Value
- Network.Google.Data.JSON: type JSONValue = Value
- Network.Google.Data.JSON: withObject :: () => String -> (Object -> Parser a) -> Value -> Parser a
- Network.Google.Data.Numeric: Nat :: Natural -> Nat
- Network.Google.Data.Numeric: [unNat] :: Nat -> Natural
- Network.Google.Data.Numeric: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance Data.Data.Data Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance GHC.Classes.Eq Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance GHC.Classes.Ord Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance GHC.Enum.Enum Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance GHC.Num.Num Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance GHC.Read.Read Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance GHC.Real.Integral Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance GHC.Real.Real Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance GHC.Show.Show Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Numeric.Nat
- Network.Google.Data.Numeric: newtype Nat
- Network.Google.Data.Time: DateTime' :: UTCTime -> DateTime'
- Network.Google.Data.Time: [unDateTime] :: DateTime' -> UTCTime
- Network.Google.Data.Time: _Date :: Iso' Date' Day
- Network.Google.Data.Time: _DateTime :: Iso' DateTime' UTCTime
- Network.Google.Data.Time: _GDuration :: Iso' GDuration Scientific
- Network.Google.Data.Time: _Time :: Iso' Time' TimeOfDay
- Network.Google.Data.Time: data Date'
- Network.Google.Data.Time: data GDuration
- Network.Google.Data.Time: data Time'
- Network.Google.Data.Time: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Time.Time'
- Network.Google.Data.Time: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Time.Time'
- Network.Google.Data.Time: instance Data.Data.Data Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance Data.Data.Data Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance Data.Data.Data Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance Data.Data.Data Network.Google.Data.Time.Time'
- Network.Google.Data.Time: instance GHC.Classes.Eq Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance GHC.Classes.Eq Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance GHC.Classes.Eq Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance GHC.Classes.Eq Network.Google.Data.Time.Time'
- Network.Google.Data.Time: instance GHC.Classes.Ord Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance GHC.Classes.Ord Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance GHC.Classes.Ord Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance GHC.Classes.Ord Network.Google.Data.Time.Time'
- Network.Google.Data.Time: instance GHC.Generics.Generic Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance GHC.Generics.Generic Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance GHC.Generics.Generic Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance GHC.Generics.Generic Network.Google.Data.Time.Time'
- Network.Google.Data.Time: instance GHC.Read.Read Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance GHC.Read.Read Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance GHC.Read.Read Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance GHC.Read.Read Network.Google.Data.Time.Time'
- Network.Google.Data.Time: instance GHC.Show.Show Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance GHC.Show.Show Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance GHC.Show.Show Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance GHC.Show.Show Network.Google.Data.Time.Time'
- Network.Google.Data.Time: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Time.Time'
- Network.Google.Data.Time: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Time.Date'
- Network.Google.Data.Time: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Time.DateTime'
- Network.Google.Data.Time: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Time.GDuration
- Network.Google.Data.Time: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Time.Time'
- Network.Google.Data.Time: newtype DateTime'
- Network.Google.Prelude: (!!) :: () => [a] -> Int -> a
- Network.Google.Prelude: (#) :: () => AReview t b -> b -> t
- Network.Google.Prelude: ($!) :: () => (a -> b) -> a -> b
- Network.Google.Prelude: ($) :: () => (a -> b) -> a -> b
- Network.Google.Prelude: (&&) :: Bool -> Bool -> Bool
- Network.Google.Prelude: (*) :: Num a => a -> a -> a
- Network.Google.Prelude: (**) :: Floating a => a -> a -> a
- Network.Google.Prelude: (*>) :: Applicative f => f a -> f b -> f b
- Network.Google.Prelude: (+) :: Num a => a -> a -> a
- Network.Google.Prelude: (++) :: () => [a] -> [a] -> [a]
- Network.Google.Prelude: (-) :: Num a => a -> a -> a
- Network.Google.Prelude: (.!=) :: () => Parser (Maybe a) -> a -> Parser a
- Network.Google.Prelude: (.) :: () => (b -> c) -> (a -> b) -> a -> c
- Network.Google.Prelude: (.:) :: FromJSON a => Object -> Text -> Parser a
- Network.Google.Prelude: (.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a)
- Network.Google.Prelude: (.=) :: (KeyValue kv, ToJSON v) => Text -> v -> kv
- Network.Google.Prelude: (/) :: Fractional a => a -> a -> a
- Network.Google.Prelude: (/=) :: Eq a => a -> a -> Bool
- Network.Google.Prelude: (:<|>) :: a -> b -> (:<|>) a b
- Network.Google.Prelude: (<$) :: Functor f => a -> f b -> f a
- Network.Google.Prelude: (<$>) :: Functor f => (a -> b) -> f a -> f b
- Network.Google.Prelude: (<) :: Ord a => a -> a -> Bool
- Network.Google.Prelude: (<*) :: Applicative f => f a -> f b -> f a
- Network.Google.Prelude: (<*>) :: Applicative f => f (a -> b) -> f a -> f b
- Network.Google.Prelude: (<=) :: Ord a => a -> a -> Bool
- Network.Google.Prelude: (<>) :: Semigroup a => a -> a -> a
- Network.Google.Prelude: (=<<) :: Monad m => (a -> m b) -> m a -> m b
- Network.Google.Prelude: (==) :: Eq a => a -> a -> Bool
- Network.Google.Prelude: (>) :: Ord a => a -> a -> Bool
- Network.Google.Prelude: (>=) :: Ord a => a -> a -> Bool
- Network.Google.Prelude: (>>) :: Monad m => m a -> m b -> m b
- Network.Google.Prelude: (>>=) :: Monad m => m a -> (a -> m b) -> m b
- Network.Google.Prelude: (^) :: (Num a, Integral b) => a -> b -> a
- Network.Google.Prelude: (^.) :: () => s -> Getting a s a -> a
- Network.Google.Prelude: (^^) :: (Fractional a, Integral b) => a -> b -> a
- Network.Google.Prelude: (||) :: Bool -> Bool -> Bool
- Network.Google.Prelude: AccessToken :: Text -> AccessToken
- Network.Google.Prelude: AltJSON :: AltJSON
- Network.Google.Prelude: AltMedia :: AltMedia
- Network.Google.Prelude: ArrayElemParam :: String -> Text -> Param
- Network.Google.Prelude: BasicAuthData :: !ByteString -> !ByteString -> BasicAuthData
- Network.Google.Prelude: Bytes :: ByteString -> Bytes
- Network.Google.Prelude: CONNECT :: StdMethod
- Network.Google.Prelude: ClientId :: Text -> ClientId
- Network.Google.Prelude: DELETE :: StdMethod
- Network.Google.Prelude: DateTime' :: UTCTime -> DateTime'
- Network.Google.Prelude: EQ :: Ordering
- Network.Google.Prelude: EmptyAPI :: EmptyAPI
- Network.Google.Prelude: False :: Bool
- Network.Google.Prelude: FlagParam :: String -> Param
- Network.Google.Prelude: GBody :: !MediaType -> !RequestBody -> GBody
- Network.Google.Prelude: GClient :: !Maybe MediaType -> !Method -> !Status -> Bool -> !ServiceConfig -> !Request -> !Stream -> ResourceT IO (Either (String, ByteString) a) -> GClient a
- Network.Google.Prelude: GET :: StdMethod
- Network.Google.Prelude: GFieldMask :: Text -> GFieldMask
- Network.Google.Prelude: GSecret :: Text -> GSecret
- Network.Google.Prelude: GT :: Ordering
- Network.Google.Prelude: HEAD :: StdMethod
- Network.Google.Prelude: HttpVersion :: !Int -> !Int -> HttpVersion
- Network.Google.Prelude: Just :: a -> Maybe a
- Network.Google.Prelude: KProxy :: KProxy t
- Network.Google.Prelude: LT :: Ordering
- Network.Google.Prelude: Left :: a -> Either a b
- Network.Google.Prelude: LinkArrayElementBracket :: LinkArrayElementStyle
- Network.Google.Prelude: LinkArrayElementPlain :: LinkArrayElementStyle
- Network.Google.Prelude: MediaDownload :: a -> MediaDownload a
- Network.Google.Prelude: MediaUpload :: a -> GBody -> MediaUpload a
- Network.Google.Prelude: Multipart :: Multipart
- Network.Google.Prelude: Nat :: Natural -> Nat
- Network.Google.Prelude: NoContent :: NoContent
- Network.Google.Prelude: NotSecure :: IsSecure
- Network.Google.Prelude: Nothing :: Maybe a
- Network.Google.Prelude: OAuthScope :: Text -> OAuthScope
- Network.Google.Prelude: OPTIONS :: StdMethod
- Network.Google.Prelude: PATCH :: StdMethod
- Network.Google.Prelude: POST :: StdMethod
- Network.Google.Prelude: PUT :: StdMethod
- Network.Google.Prelude: Proxy :: Proxy
- Network.Google.Prelude: RefreshToken :: Text -> RefreshToken
- Network.Google.Prelude: Request :: !Builder -> !DList (ByteString, Maybe ByteString) -> !DList (HeaderName, ByteString) -> ![GBody] -> Request
- Network.Google.Prelude: Right :: b -> Either a b
- Network.Google.Prelude: Seconds :: Int -> Seconds
- Network.Google.Prelude: Secure :: IsSecure
- Network.Google.Prelude: SerializeError :: SerializeError -> Error
- Network.Google.Prelude: SerializeError' :: !ServiceId -> [Header] -> !Status -> !String -> !Maybe ByteString -> SerializeError
- Network.Google.Prelude: ServiceConfig :: !ServiceId -> !ByteString -> !Builder -> !Int -> !Bool -> !Maybe Seconds -> ServiceConfig
- Network.Google.Prelude: ServiceError :: ServiceError -> Error
- Network.Google.Prelude: ServiceError' :: !ServiceId -> !Status -> ![Header] -> !Maybe ByteString -> ServiceError
- Network.Google.Prelude: ServiceId :: Text -> ServiceId
- Network.Google.Prelude: SingleParam :: String -> Text -> Param
- Network.Google.Prelude: TRACE :: StdMethod
- Network.Google.Prelude: Textual :: a -> Textual a
- Network.Google.Prelude: TransportError :: HttpException -> Error
- Network.Google.Prelude: True :: Bool
- Network.Google.Prelude: URI :: String -> Maybe URIAuth -> String -> String -> String -> URI
- Network.Google.Prelude: [HCons] :: forall (a :: [Type]) (h :: Symbol) x (xs :: [Type]). () => ResponseHeader h x -> HList xs -> HList (Header h x : xs)
- Network.Google.Prelude: [HNil] :: forall (a :: [Type]). () => HList ([] :: [Type])
- Network.Google.Prelude: [SFalse] :: forall (b :: Bool). () => SBool False
- Network.Google.Prelude: [STrue] :: forall (b :: Bool). () => SBool True
- Network.Google.Prelude: [_cliAccept] :: GClient a -> !Maybe MediaType
- Network.Google.Prelude: [_cliCheck] :: GClient a -> !Status -> Bool
- Network.Google.Prelude: [_cliMethod] :: GClient a -> !Method
- Network.Google.Prelude: [_cliRequest] :: GClient a -> !Request
- Network.Google.Prelude: [_cliResponse] :: GClient a -> !Stream -> ResourceT IO (Either (String, ByteString) a)
- Network.Google.Prelude: [_cliService] :: GClient a -> !ServiceConfig
- Network.Google.Prelude: [_rqBody] :: Request -> ![GBody]
- Network.Google.Prelude: [_rqHeaders] :: Request -> !DList (HeaderName, ByteString)
- Network.Google.Prelude: [_rqPath] :: Request -> !Builder
- Network.Google.Prelude: [_rqQuery] :: Request -> !DList (ByteString, Maybe ByteString)
- Network.Google.Prelude: [_serializeBody] :: SerializeError -> !Maybe ByteString
- Network.Google.Prelude: [_serializeHeaders] :: SerializeError -> [Header]
- Network.Google.Prelude: [_serializeId] :: SerializeError -> !ServiceId
- Network.Google.Prelude: [_serializeMessage] :: SerializeError -> !String
- Network.Google.Prelude: [_serializeStatus] :: SerializeError -> !Status
- Network.Google.Prelude: [_serviceBody] :: ServiceError -> !Maybe ByteString
- Network.Google.Prelude: [_serviceHeaders] :: ServiceError -> ![Header]
- Network.Google.Prelude: [_serviceId] :: ServiceError -> !ServiceId
- Network.Google.Prelude: [_serviceStatus] :: ServiceError -> !Status
- Network.Google.Prelude: [_svcHost] :: ServiceConfig -> !ByteString
- Network.Google.Prelude: [_svcId] :: ServiceConfig -> !ServiceId
- Network.Google.Prelude: [_svcPath] :: ServiceConfig -> !Builder
- Network.Google.Prelude: [_svcPort] :: ServiceConfig -> !Int
- Network.Google.Prelude: [_svcSecure] :: ServiceConfig -> !Bool
- Network.Google.Prelude: [_svcTimeout] :: ServiceConfig -> !Maybe Seconds
- Network.Google.Prelude: [basicAuthPassword] :: BasicAuthData -> !ByteString
- Network.Google.Prelude: [basicAuthUsername] :: BasicAuthData -> !ByteString
- Network.Google.Prelude: [httpMajor] :: HttpVersion -> !Int
- Network.Google.Prelude: [httpMinor] :: HttpVersion -> !Int
- Network.Google.Prelude: [unBytes] :: Bytes -> ByteString
- Network.Google.Prelude: [unDateTime] :: DateTime' -> UTCTime
- Network.Google.Prelude: [unNat] :: Nat -> Natural
- Network.Google.Prelude: [uriAuthority] :: URI -> Maybe URIAuth
- Network.Google.Prelude: [uriFragment] :: URI -> String
- Network.Google.Prelude: [uriPath] :: URI -> String
- Network.Google.Prelude: [uriQuery] :: URI -> String
- Network.Google.Prelude: [uriScheme] :: URI -> String
- Network.Google.Prelude: _Bytes :: Iso' Bytes ByteString
- Network.Google.Prelude: _Coerce :: (Coercible a b, Coercible b a) => Iso' a b
- Network.Google.Prelude: _Date :: Iso' Date' Day
- Network.Google.Prelude: _DateTime :: Iso' DateTime' UTCTime
- Network.Google.Prelude: _Default :: Monoid a => Iso' (Maybe a) a
- Network.Google.Prelude: _Error :: AsError a => Prism' a Error
- Network.Google.Prelude: _GDuration :: Iso' GDuration Scientific
- Network.Google.Prelude: _Just :: () => Prism (Maybe a) (Maybe b) a b
- Network.Google.Prelude: _SerializeError :: AsError a => Prism' a SerializeError
- Network.Google.Prelude: _ServiceError :: AsError a => Prism' a ServiceError
- Network.Google.Prelude: _Time :: Iso' Time' TimeOfDay
- Network.Google.Prelude: _TransportError :: AsError a => Prism' a HttpException
- Network.Google.Prelude: abs :: Num a => a -> a
- Network.Google.Prelude: acos :: Floating a => a -> a
- Network.Google.Prelude: acosh :: Floating a => a -> a
- Network.Google.Prelude: addHeader :: AddHeader h v orig new => v -> orig -> new
- Network.Google.Prelude: all :: Foldable t => (a -> Bool) -> t a -> Bool
- Network.Google.Prelude: allFieldLinks :: (HasLink (ToServantApi routes), GenericServant routes (AsLink Link), ToServant routes (AsLink Link) ~ MkLink (ToServantApi routes) Link) => routes (AsLink Link)
- Network.Google.Prelude: allFieldLinks' :: (HasLink (ToServantApi routes), GenericServant routes (AsLink a), ToServant routes (AsLink a) ~ MkLink (ToServantApi routes) a) => (Link -> a) -> routes (AsLink a)
- Network.Google.Prelude: allLinks :: HasLink api => Proxy api -> MkLink api Link
- Network.Google.Prelude: allLinks' :: HasLink api => (Link -> a) -> Proxy api -> MkLink api a
- Network.Google.Prelude: and :: Foldable t => t Bool -> Bool
- Network.Google.Prelude: appendFile :: FilePath -> String -> IO ()
- Network.Google.Prelude: appendHeader :: Request -> HeaderName -> Maybe Text -> Request
- Network.Google.Prelude: appendPath :: Request -> Builder -> Request
- Network.Google.Prelude: appendPaths :: ToHttpApiData a => Request -> [a] -> Request
- Network.Google.Prelude: appendQuery :: Request -> ByteString -> Maybe Text -> Request
- Network.Google.Prelude: asProxyTypeOf :: () => a -> proxy a -> a
- Network.Google.Prelude: asTypeOf :: () => a -> a -> a
- Network.Google.Prelude: asin :: Floating a => a -> a
- Network.Google.Prelude: asinh :: Floating a => a -> a
- Network.Google.Prelude: atan :: Floating a => a -> a
- Network.Google.Prelude: atan2 :: RealFloat a => a -> a -> a
- Network.Google.Prelude: atanh :: Floating a => a -> a
- Network.Google.Prelude: bodyContentType :: Lens' GBody MediaType
- Network.Google.Prelude: break :: () => (a -> Bool) -> [a] -> ([a], [a])
- Network.Google.Prelude: buildClient :: GoogleClient fn => Proxy fn -> Request -> Fn fn
- Network.Google.Prelude: buildHeadersTo :: BuildHeadersTo hs => [Header] -> HList hs
- Network.Google.Prelude: buildSymbol :: forall n proxy. KnownSymbol n => proxy n -> Builder
- Network.Google.Prelude: buildText :: ToHttpApiData a => a -> Builder
- Network.Google.Prelude: byteSymbol :: forall n proxy. KnownSymbol n => proxy n -> ByteString
- Network.Google.Prelude: catMaybes :: () => [Maybe a] -> [a]
- Network.Google.Prelude: ceiling :: (RealFrac a, Integral b) => a -> b
- Network.Google.Prelude: class Accept (ctype :: k)
- Network.Google.Prelude: class AddHeader (h :: Symbol) v orig new | h v orig -> new, new -> h, new -> v, new -> orig
- Network.Google.Prelude: class Functor f => Applicative (f :: Type -> Type)
- Network.Google.Prelude: class AsError a
- Network.Google.Prelude: class Bounded a
- Network.Google.Prelude: class BuildHeadersTo (hs :: [Type])
- Network.Google.Prelude: class Typeable a => Data a
- Network.Google.Prelude: class Enum a
- Network.Google.Prelude: class Eq a
- Network.Google.Prelude: class Fractional a => Floating a
- Network.Google.Prelude: class Foldable (t :: Type -> Type)
- Network.Google.Prelude: class Num a => Fractional a
- Network.Google.Prelude: class FramingRender (strategy :: k)
- Network.Google.Prelude: class FramingUnrender (strategy :: k)
- Network.Google.Prelude: class FromHttpApiData a
- Network.Google.Prelude: class FromJSON a
- Network.Google.Prelude: class FromSourceIO chunk a | a -> chunk
- Network.Google.Prelude: class Accept c => FromStream c a
- Network.Google.Prelude: class Functor (f :: Type -> Type)
- Network.Google.Prelude: class Generic a
- Network.Google.Prelude: class GetHeaders ls
- Network.Google.Prelude: class GoogleClient fn where {
- Network.Google.Prelude: class GoogleRequest a where {
- Network.Google.Prelude: class HasLink (endpoint :: k) where {
- Network.Google.Prelude: class HasResponseHeader (h :: Symbol) a (headers :: [Type])
- Network.Google.Prelude: class Hashable a
- Network.Google.Prelude: class (Real a, Enum a) => Integral a
- Network.Google.Prelude: class Accept ctype => MimeRender (ctype :: k) a
- Network.Google.Prelude: class Accept ctype => MimeUnrender (ctype :: k) a
- Network.Google.Prelude: class Applicative m => Monad (m :: Type -> Type)
- Network.Google.Prelude: class Semigroup a => Monoid a
- Network.Google.Prelude: class Num a
- Network.Google.Prelude: class Eq a => Ord a
- Network.Google.Prelude: class Read a
- Network.Google.Prelude: class (Num a, Ord a) => Real a
- Network.Google.Prelude: class (RealFrac a, Floating a) => RealFloat a
- Network.Google.Prelude: class (Real a, Fractional a) => RealFrac a
- Network.Google.Prelude: class ReflectMethod (a :: k)
- Network.Google.Prelude: class SBoolI (b :: Bool)
- Network.Google.Prelude: class Semigroup a
- Network.Google.Prelude: class Show a
- Network.Google.Prelude: class Accept c => ToBody c a
- Network.Google.Prelude: class ToHttpApiData a
- Network.Google.Prelude: class ToJSON a
- Network.Google.Prelude: class ToSourceIO chunk a | a -> chunk
- Network.Google.Prelude: class (Functor t, Foldable t) => Traversable (t :: Type -> Type)
- Network.Google.Prelude: class Typeable (a :: k)
- Network.Google.Prelude: clientService :: Lens' (GClient a) ServiceConfig
- Network.Google.Prelude: compare :: Ord a => a -> a -> Ordering
- Network.Google.Prelude: concat :: Foldable t => t [a] -> [a]
- Network.Google.Prelude: concatMap :: Foldable t => (a -> [b]) -> t a -> [b]
- Network.Google.Prelude: const :: () => a -> b -> a
- Network.Google.Prelude: contentType :: Accept ctype => Proxy ctype -> MediaType
- Network.Google.Prelude: contentTypes :: Accept ctype => Proxy ctype -> NonEmpty MediaType
- Network.Google.Prelude: cos :: Floating a => a -> a
- Network.Google.Prelude: cosh :: Floating a => a -> a
- Network.Google.Prelude: curry :: () => ((a, b) -> c) -> a -> b -> c
- Network.Google.Prelude: cycle :: () => [a] -> [a]
- Network.Google.Prelude: data (:<|>) a b
- Network.Google.Prelude: data AltJSON
- Network.Google.Prelude: data AltMedia
- Network.Google.Prelude: data AsLink a
- Network.Google.Prelude: data BasicAuth (realm :: Symbol) userData
- Network.Google.Prelude: data BasicAuthData
- Network.Google.Prelude: data Bool
- Network.Google.Prelude: data ByteString
- Network.Google.Prelude: data Capture' (mods :: [Type]) (sym :: Symbol) a
- Network.Google.Prelude: data CaptureAll (sym :: Symbol) a
- Network.Google.Prelude: data CaptureMode (s :: Symbol) (m :: Symbol) a
- Network.Google.Prelude: data Captures (s :: Symbol) a
- Network.Google.Prelude: data Char
- Network.Google.Prelude: data Date'
- Network.Google.Prelude: data Day
- Network.Google.Prelude: data Description (sym :: Symbol)
- Network.Google.Prelude: data Double
- Network.Google.Prelude: data Either a b
- Network.Google.Prelude: data EmptyAPI
- Network.Google.Prelude: data Error
- Network.Google.Prelude: data Float
- Network.Google.Prelude: data FormUrlEncoded
- Network.Google.Prelude: data GBody
- Network.Google.Prelude: data GClient a
- Network.Google.Prelude: data GDuration
- Network.Google.Prelude: data HList (a :: [Type])
- Network.Google.Prelude: data HashMap k v
- Network.Google.Prelude: data HttpVersion
- Network.Google.Prelude: data IO a
- Network.Google.Prelude: data Int
- Network.Google.Prelude: data Int32
- Network.Google.Prelude: data Int64
- Network.Google.Prelude: data Integer
- Network.Google.Prelude: data IsSecure
- Network.Google.Prelude: data JSON
- Network.Google.Prelude: data KProxy t
- Network.Google.Prelude: data Lenient
- Network.Google.Prelude: data LinkArrayElementStyle
- Network.Google.Prelude: data Maybe a
- Network.Google.Prelude: data MediaUpload a
- Network.Google.Prelude: data Multipart
- Network.Google.Prelude: data MultipartRelated (cs :: [*]) m
- Network.Google.Prelude: data Natural
- Network.Google.Prelude: data NetstringFraming
- Network.Google.Prelude: data NewlineFraming
- Network.Google.Prelude: data NoContent
- Network.Google.Prelude: data NoFraming
- Network.Google.Prelude: data OctetStream
- Network.Google.Prelude: data Optional
- Network.Google.Prelude: data Ordering
- Network.Google.Prelude: data Param
- Network.Google.Prelude: data PlainText
- Network.Google.Prelude: data QueryFlag (sym :: Symbol)
- Network.Google.Prelude: data QueryParam' (mods :: [Type]) (sym :: Symbol) a
- Network.Google.Prelude: data QueryParams (sym :: Symbol) a
- Network.Google.Prelude: data Raw
- Network.Google.Prelude: data RemoteHost
- Network.Google.Prelude: data ReqBody' (mods :: [Type]) (contentTypes :: [Type]) a
- Network.Google.Prelude: data Request
- Network.Google.Prelude: data RequestBody
- Network.Google.Prelude: data Required
- Network.Google.Prelude: data SBool (b :: Bool)
- Network.Google.Prelude: data Scientific
- Network.Google.Prelude: data SerializeError
- Network.Google.Prelude: data ServiceConfig
- Network.Google.Prelude: data ServiceError
- Network.Google.Prelude: data StdMethod
- Network.Google.Prelude: data StreamBody' (mods :: [Type]) framing contentType a
- Network.Google.Prelude: data Strict
- Network.Google.Prelude: data Summary (sym :: Symbol)
- Network.Google.Prelude: data Text
- Network.Google.Prelude: data Time'
- Network.Google.Prelude: data TimeOfDay
- Network.Google.Prelude: data URI
- Network.Google.Prelude: data UTCTime
- Network.Google.Prelude: data WithNamedContext (name :: Symbol) (subContext :: [Type]) subApi
- Network.Google.Prelude: data Word32
- Network.Google.Prelude: data Word64
- Network.Google.Prelude: data Word8
- Network.Google.Prelude: data Header' (mods :: [Type]) (sym :: Symbol) (a :: k) :: forall k. () => [Type] -> Symbol -> k -> Type
- Network.Google.Prelude: data AuthProtect (tag :: k) :: forall k. () => k -> Type
- Network.Google.Prelude: data Verb (method :: k1) (statusCode :: Nat) (contentTypes :: [Type]) a :: forall k1. () => k1 -> Nat -> [Type] -> Type -> Type
- Network.Google.Prelude: decodeFloat :: RealFloat a => a -> (Integer, Int)
- Network.Google.Prelude: defaultService :: ServiceId -> ByteString -> ServiceConfig
- Network.Google.Prelude: discard :: Method -> [Int] -> Request -> ServiceConfig -> GClient ()
- Network.Google.Prelude: div :: Integral a => a -> a -> a
- Network.Google.Prelude: divMod :: Integral a => a -> a -> (a, a)
- Network.Google.Prelude: drop :: () => Int -> [a] -> [a]
- Network.Google.Prelude: dropWhile :: () => (a -> Bool) -> [a] -> [a]
- Network.Google.Prelude: either :: () => (a -> c) -> (b -> c) -> Either a b -> c
- Network.Google.Prelude: elem :: (Foldable t, Eq a) => a -> t a -> Bool
- Network.Google.Prelude: emptyObject :: Value
- Network.Google.Prelude: encodeFloat :: RealFloat a => Integer -> Int -> a
- Network.Google.Prelude: enumFrom :: Enum a => a -> [a]
- Network.Google.Prelude: enumFromThen :: Enum a => a -> a -> [a]
- Network.Google.Prelude: enumFromThenTo :: Enum a => a -> a -> a -> [a]
- Network.Google.Prelude: enumFromTo :: Enum a => a -> a -> [a]
- Network.Google.Prelude: error :: HasCallStack => [Char] -> a
- Network.Google.Prelude: errorWithoutStackTrace :: () => [Char] -> a
- Network.Google.Prelude: even :: Integral a => a -> Bool
- Network.Google.Prelude: exp :: Floating a => a -> a
- Network.Google.Prelude: exponent :: RealFloat a => a -> Int
- Network.Google.Prelude: fail :: Monad m => String -> m a
- Network.Google.Prelude: fieldLink :: (IsElem endpoint (ToServantApi routes), HasLink endpoint, GenericServant routes AsApi) => (routes AsApi -> endpoint) -> MkLink endpoint Link
- Network.Google.Prelude: fieldLink' :: (IsElem endpoint (ToServantApi routes), HasLink endpoint, GenericServant routes AsApi) => (Link -> a) -> (routes AsApi -> endpoint) -> MkLink endpoint a
- Network.Google.Prelude: filter :: () => (a -> Bool) -> [a] -> [a]
- Network.Google.Prelude: flip :: () => (a -> b -> c) -> b -> a -> c
- Network.Google.Prelude: floatDigits :: RealFloat a => a -> Int
- Network.Google.Prelude: floatRadix :: RealFloat a => a -> Integer
- Network.Google.Prelude: floatRange :: RealFloat a => a -> (Int, Int)
- Network.Google.Prelude: floor :: (RealFrac a, Integral b) => a -> b
- Network.Google.Prelude: fmap :: Functor f => (a -> b) -> f a -> f b
- Network.Google.Prelude: foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m
- Network.Google.Prelude: foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b
- Network.Google.Prelude: foldl1 :: Foldable t => (a -> a -> a) -> t a -> a
- Network.Google.Prelude: foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
- Network.Google.Prelude: foldr1 :: Foldable t => (a -> a -> a) -> t a -> a
- Network.Google.Prelude: framingRender :: (FramingRender strategy, Monad m) => Proxy strategy -> (a -> ByteString) -> SourceT m a -> SourceT m ByteString
- Network.Google.Prelude: framingUnrender :: (FramingUnrender strategy, Monad m) => Proxy strategy -> (ByteString -> Either String a) -> SourceT m ByteString -> SourceT m a
- Network.Google.Prelude: fromEnum :: Enum a => a -> Int
- Network.Google.Prelude: fromInteger :: Num a => Integer -> a
- Network.Google.Prelude: fromIntegral :: (Integral a, Num b) => a -> b
- Network.Google.Prelude: fromJust :: () => Maybe a -> a
- Network.Google.Prelude: fromMaybe :: () => a -> Maybe a -> a
- Network.Google.Prelude: fromRational :: Fractional a => Rational -> a
- Network.Google.Prelude: fromSourceIO :: FromSourceIO chunk a => SourceIO chunk -> a
- Network.Google.Prelude: fromStream :: FromStream c a => Proxy c -> Stream -> ResourceT IO (Either (String, ByteString) a)
- Network.Google.Prelude: fst :: () => (a, b) -> a
- Network.Google.Prelude: gClient :: (Stream -> ResourceT IO (Either (String, ByteString) a)) -> Maybe MediaType -> Method -> [Int] -> Request -> ServiceConfig -> GClient a
- Network.Google.Prelude: gcd :: Integral a => a -> a -> a
- Network.Google.Prelude: getChar :: IO Char
- Network.Google.Prelude: getContents :: IO String
- Network.Google.Prelude: getHeaders :: GetHeaders ls => ls -> [Header]
- Network.Google.Prelude: getHeadersHList :: Headers ls a -> HList ls
- Network.Google.Prelude: getLine :: IO String
- Network.Google.Prelude: hashWithSalt :: Hashable a => Int -> a -> Int
- Network.Google.Prelude: head :: () => [a] -> a
- Network.Google.Prelude: id :: () => a -> a
- Network.Google.Prelude: infix 4 `notElem`
- Network.Google.Prelude: infixl 0 `hashWithSalt`
- Network.Google.Prelude: infixl 1 >>
- Network.Google.Prelude: infixl 4 <$>
- Network.Google.Prelude: infixl 6 -
- Network.Google.Prelude: infixl 7 *
- Network.Google.Prelude: infixl 8 ^.
- Network.Google.Prelude: infixl 9 !!
- Network.Google.Prelude: infixr 0 $!
- Network.Google.Prelude: infixr 1 =<<
- Network.Google.Prelude: infixr 2 ||
- Network.Google.Prelude: infixr 3 :<|>
- Network.Google.Prelude: infixr 4 :>
- Network.Google.Prelude: infixr 5 ++
- Network.Google.Prelude: infixr 6 <>
- Network.Google.Prelude: infixr 8 #
- Network.Google.Prelude: infixr 9 .
- Network.Google.Prelude: init :: () => [a] -> [a]
- Network.Google.Prelude: interact :: (String -> String) -> IO ()
- Network.Google.Prelude: ioError :: () => IOError -> IO a
- Network.Google.Prelude: isDenormalized :: RealFloat a => a -> Bool
- Network.Google.Prelude: isIEEE :: RealFloat a => a -> Bool
- Network.Google.Prelude: isInfinite :: RealFloat a => a -> Bool
- Network.Google.Prelude: isJust :: () => Maybe a -> Bool
- Network.Google.Prelude: isNaN :: RealFloat a => a -> Bool
- Network.Google.Prelude: isNegativeZero :: RealFloat a => a -> Bool
- Network.Google.Prelude: isNothing :: () => Maybe a -> Bool
- Network.Google.Prelude: iterate :: () => (a -> a) -> a -> [a]
- Network.Google.Prelude: last :: () => [a] -> a
- Network.Google.Prelude: lcm :: Integral a => a -> a -> a
- Network.Google.Prelude: length :: Foldable t => t a -> Int
- Network.Google.Prelude: lens :: () => (s -> a) -> (s -> b -> t) -> Lens s t a b
- Network.Google.Prelude: lex :: ReadS String
- Network.Google.Prelude: lines :: String -> [String]
- Network.Google.Prelude: linkQueryParams :: Link -> [Param]
- Network.Google.Prelude: linkSegments :: Link -> [String]
- Network.Google.Prelude: linkURI :: Link -> URI
- Network.Google.Prelude: linkURI' :: LinkArrayElementStyle -> Link -> URI
- Network.Google.Prelude: listToMaybe :: () => [a] -> Maybe a
- Network.Google.Prelude: log :: Floating a => a -> a
- Network.Google.Prelude: logBase :: Floating a => a -> a -> a
- Network.Google.Prelude: lookup :: Eq a => a -> [(a, b)] -> Maybe b
- Network.Google.Prelude: lookupResponseHeader :: HasResponseHeader h a headers => Headers headers r -> ResponseHeader h a
- Network.Google.Prelude: map :: () => (a -> b) -> [a] -> [b]
- Network.Google.Prelude: mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
- Network.Google.Prelude: mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
- Network.Google.Prelude: mapMaybe :: () => (a -> Maybe b) -> [a] -> [b]
- Network.Google.Prelude: mappend :: Monoid a => a -> a -> a
- Network.Google.Prelude: mapping :: (Functor f, Functor g) => AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
- Network.Google.Prelude: max :: Ord a => a -> a -> a
- Network.Google.Prelude: maxBound :: Bounded a => a
- Network.Google.Prelude: maximum :: (Foldable t, Ord a) => t a -> a
- Network.Google.Prelude: maybe :: () => b -> (a -> b) -> Maybe a -> b
- Network.Google.Prelude: maybeToList :: () => Maybe a -> [a]
- Network.Google.Prelude: mconcat :: Monoid a => [a] -> a
- Network.Google.Prelude: mempty :: Monoid a => a
- Network.Google.Prelude: microseconds :: Seconds -> Int
- Network.Google.Prelude: mime :: FromStream c a => Proxy c -> Method -> [Int] -> Request -> ServiceConfig -> GClient a
- Network.Google.Prelude: mimeRender :: MimeRender ctype a => Proxy ctype -> a -> ByteString
- Network.Google.Prelude: mimeUnrender :: MimeUnrender ctype a => Proxy ctype -> ByteString -> Either String a
- Network.Google.Prelude: mimeUnrenderWithType :: MimeUnrender ctype a => Proxy ctype -> MediaType -> ByteString -> Either String a
- Network.Google.Prelude: min :: Ord a => a -> a -> a
- Network.Google.Prelude: minBound :: Bounded a => a
- Network.Google.Prelude: minimum :: (Foldable t, Ord a) => t a -> a
- Network.Google.Prelude: mod :: Integral a => a -> a -> a
- Network.Google.Prelude: negate :: Num a => a -> a
- Network.Google.Prelude: newtype AccessToken
- Network.Google.Prelude: newtype Bytes
- Network.Google.Prelude: newtype ClientId
- Network.Google.Prelude: newtype DateTime'
- Network.Google.Prelude: newtype GFieldMask
- Network.Google.Prelude: newtype GSecret
- Network.Google.Prelude: newtype MediaDownload a
- Network.Google.Prelude: newtype Nat
- Network.Google.Prelude: newtype OAuthScope
- Network.Google.Prelude: newtype RefreshToken
- Network.Google.Prelude: newtype Seconds
- Network.Google.Prelude: newtype ServiceId
- Network.Google.Prelude: newtype Textual a
- Network.Google.Prelude: noHeader :: AddHeader h v orig new => orig -> new
- Network.Google.Prelude: not :: Bool -> Bool
- Network.Google.Prelude: notElem :: (Foldable t, Eq a) => a -> t a -> Bool
- Network.Google.Prelude: null :: Foldable t => t a -> Bool
- Network.Google.Prelude: object :: [Pair] -> Value
- Network.Google.Prelude: odd :: Integral a => a -> Bool
- Network.Google.Prelude: or :: Foldable t => t Bool -> Bool
- Network.Google.Prelude: otherwise :: Bool
- Network.Google.Prelude: parseHeader :: FromHttpApiData a => ByteString -> Either Text a
- Network.Google.Prelude: parseJSON :: FromJSON a => Value -> Parser a
- Network.Google.Prelude: parseJSONList :: FromJSON a => Value -> Parser [a]
- Network.Google.Prelude: parseJSONObject :: FromJSON a => HashMap Text Value -> Parser a
- Network.Google.Prelude: parseJSONText :: FromHttpApiData a => String -> Value -> Parser a
- Network.Google.Prelude: parseQueryParam :: FromHttpApiData a => Text -> Either Text a
- Network.Google.Prelude: parseUrlPiece :: FromHttpApiData a => Text -> Either Text a
- Network.Google.Prelude: pattern UndecodableHeader :: () => () => ByteString -> ResponseHeader sym a
- Network.Google.Prelude: pattern MissingHeader :: () => () => ResponseHeader sym a
- Network.Google.Prelude: pi :: Floating a => a
- Network.Google.Prelude: pred :: Enum a => a -> a
- Network.Google.Prelude: print :: Show a => a -> IO ()
- Network.Google.Prelude: properFraction :: (RealFrac a, Integral b) => a -> (b, a)
- Network.Google.Prelude: pure :: Applicative f => a -> f a
- Network.Google.Prelude: putChar :: Char -> IO ()
- Network.Google.Prelude: putStr :: String -> IO ()
- Network.Google.Prelude: putStrLn :: String -> IO ()
- Network.Google.Prelude: quot :: Integral a => a -> a -> a
- Network.Google.Prelude: quotRem :: Integral a => a -> a -> (a, a)
- Network.Google.Prelude: read :: Read a => String -> a
- Network.Google.Prelude: readFile :: FilePath -> IO String
- Network.Google.Prelude: readIO :: Read a => String -> IO a
- Network.Google.Prelude: readList :: Read a => ReadS [a]
- Network.Google.Prelude: readLn :: Read a => IO a
- Network.Google.Prelude: readParen :: () => Bool -> ReadS a -> ReadS a
- Network.Google.Prelude: reads :: Read a => ReadS a
- Network.Google.Prelude: readsPrec :: Read a => Int -> ReadS a
- Network.Google.Prelude: realToFrac :: (Real a, Fractional b) => a -> b
- Network.Google.Prelude: recip :: Fractional a => a -> a
- Network.Google.Prelude: reflectMethod :: ReflectMethod a => Proxy a -> Method
- Network.Google.Prelude: rem :: Integral a => a -> a -> a
- Network.Google.Prelude: repeat :: () => a -> [a]
- Network.Google.Prelude: replicate :: () => Int -> a -> [a]
- Network.Google.Prelude: requestClient :: GoogleRequest a => a -> GClient (Rs a)
- Network.Google.Prelude: return :: Monad m => a -> m a
- Network.Google.Prelude: reverse :: () => [a] -> [a]
- Network.Google.Prelude: round :: (RealFrac a, Integral b) => a -> b
- Network.Google.Prelude: safeLink :: (IsElem endpoint api, HasLink endpoint) => Proxy api -> Proxy endpoint -> MkLink endpoint Link
- Network.Google.Prelude: safeLink' :: (IsElem endpoint api, HasLink endpoint) => (Link -> a) -> Proxy api -> Proxy endpoint -> MkLink endpoint a
- Network.Google.Prelude: sbool :: SBoolI b => SBool b
- Network.Google.Prelude: scaleFloat :: RealFloat a => Int -> a -> a
- Network.Google.Prelude: scanl :: () => (b -> a -> b) -> b -> [a] -> [b]
- Network.Google.Prelude: scanl1 :: () => (a -> a -> a) -> [a] -> [a]
- Network.Google.Prelude: scanr :: () => (a -> b -> b) -> b -> [a] -> [b]
- Network.Google.Prelude: scanr1 :: () => (a -> a -> a) -> [a] -> [a]
- Network.Google.Prelude: seconds :: Seconds -> Int
- Network.Google.Prelude: seq :: () => a -> b -> b
- Network.Google.Prelude: sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)
- Network.Google.Prelude: sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
- Network.Google.Prelude: sequence_ :: (Foldable t, Monad m) => t (m a) -> m ()
- Network.Google.Prelude: serviceHost :: Lens' ServiceConfig ByteString
- Network.Google.Prelude: servicePath :: Lens' ServiceConfig Builder
- Network.Google.Prelude: servicePort :: Lens' ServiceConfig Int
- Network.Google.Prelude: serviceSecure :: Lens' ServiceConfig Bool
- Network.Google.Prelude: serviceTimeout :: Lens' ServiceConfig (Maybe Seconds)
- Network.Google.Prelude: setBody :: Request -> [GBody] -> Request
- Network.Google.Prelude: show :: Show a => a -> String
- Network.Google.Prelude: showChar :: Char -> ShowS
- Network.Google.Prelude: showList :: Show a => [a] -> ShowS
- Network.Google.Prelude: showParen :: Bool -> ShowS -> ShowS
- Network.Google.Prelude: showString :: String -> ShowS
- Network.Google.Prelude: shows :: Show a => a -> ShowS
- Network.Google.Prelude: showsPrec :: Show a => Int -> a -> ShowS
- Network.Google.Prelude: significand :: RealFloat a => a -> a
- Network.Google.Prelude: signum :: Num a => a -> a
- Network.Google.Prelude: sin :: Floating a => a -> a
- Network.Google.Prelude: sinh :: Floating a => a -> a
- Network.Google.Prelude: sinkLBS :: Stream -> ResourceT IO ByteString
- Network.Google.Prelude: snd :: () => (a, b) -> b
- Network.Google.Prelude: splitAt :: () => Int -> [a] -> ([a], [a])
- Network.Google.Prelude: sqrt :: Floating a => a -> a
- Network.Google.Prelude: subtract :: Num a => a -> a -> a
- Network.Google.Prelude: succ :: Enum a => a -> a
- Network.Google.Prelude: sum :: (Foldable t, Num a) => t a -> a
- Network.Google.Prelude: tail :: () => [a] -> [a]
- Network.Google.Prelude: take :: () => Int -> [a] -> [a]
- Network.Google.Prelude: takeWhile :: () => (a -> Bool) -> [a] -> [a]
- Network.Google.Prelude: tan :: Floating a => a -> a
- Network.Google.Prelude: tanh :: Floating a => a -> a
- Network.Google.Prelude: toBody :: ToBody c a => Proxy c -> a -> GBody
- Network.Google.Prelude: toEncodedUrlPiece :: ToHttpApiData a => a -> Builder
- Network.Google.Prelude: toEncoding :: ToJSON a => a -> Encoding
- Network.Google.Prelude: toEncodingList :: ToJSON a => [a] -> Encoding
- Network.Google.Prelude: toEnum :: Enum a => Int -> a
- Network.Google.Prelude: toHeader :: ToHttpApiData a => a -> ByteString
- Network.Google.Prelude: toInteger :: Integral a => a -> Integer
- Network.Google.Prelude: toJSON :: ToJSON a => a -> Value
- Network.Google.Prelude: toJSONList :: ToJSON a => [a] -> Value
- Network.Google.Prelude: toJSONText :: ToHttpApiData a => a -> Value
- Network.Google.Prelude: toLink :: HasLink endpoint => (Link -> a) -> Proxy endpoint -> Link -> MkLink endpoint a
- Network.Google.Prelude: toQueryParam :: ToHttpApiData a => a -> Text
- Network.Google.Prelude: toRational :: Real a => a -> Rational
- Network.Google.Prelude: toSourceIO :: ToSourceIO chunk a => a -> SourceIO chunk
- Network.Google.Prelude: toUrlPiece :: ToHttpApiData a => a -> Text
- Network.Google.Prelude: traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
- Network.Google.Prelude: truncate :: (RealFrac a, Integral b) => a -> b
- Network.Google.Prelude: type Capture = Capture' ([] :: [Type])
- Network.Google.Prelude: type Delete = Verb DELETE 200
- Network.Google.Prelude: type DeleteAccepted = Verb DELETE 202
- Network.Google.Prelude: type DeleteNoContent = Verb DELETE 204
- Network.Google.Prelude: type DeleteNonAuthoritative = Verb DELETE 203
- Network.Google.Prelude: type Elem (e :: t) (es :: [t]) = ElemGo e es es
- Network.Google.Prelude: type FilePath = String
- Network.Google.Prelude: type Get = Verb GET 200
- Network.Google.Prelude: type GetAccepted = Verb GET 202
- Network.Google.Prelude: type GetNoContent = Verb GET 204
- Network.Google.Prelude: type GetNonAuthoritative = Verb GET 203
- Network.Google.Prelude: type GetPartialContent = Verb GET 206
- Network.Google.Prelude: type GetResetContent = Verb GET 205
- Network.Google.Prelude: type IOError = IOException
- Network.Google.Prelude: type JSONValue = Value
- Network.Google.Prelude: type Lens' s a = Lens s s a a
- Network.Google.Prelude: type Patch = Verb PATCH 200
- Network.Google.Prelude: type PatchAccepted = Verb PATCH 202
- Network.Google.Prelude: type PatchNoContent = Verb PATCH 204
- Network.Google.Prelude: type PatchNonAuthoritative = Verb PATCH 203
- Network.Google.Prelude: type Post = Verb POST 200
- Network.Google.Prelude: type PostAccepted = Verb POST 202
- Network.Google.Prelude: type PostCreated = Verb POST 201
- Network.Google.Prelude: type PostNoContent = Verb POST 204
- Network.Google.Prelude: type PostNonAuthoritative = Verb POST 203
- Network.Google.Prelude: type PostResetContent = Verb POST 205
- Network.Google.Prelude: type Put = Verb PUT 200
- Network.Google.Prelude: type PutAccepted = Verb PUT 202
- Network.Google.Prelude: type PutCreated = Verb PUT 201
- Network.Google.Prelude: type PutNoContent = Verb PUT 204
- Network.Google.Prelude: type PutNonAuthoritative = Verb PUT 203
- Network.Google.Prelude: type QueryParam = QueryParam' Optional : Strict : ([] :: [Type])
- Network.Google.Prelude: type Rational = Ratio Integer
- Network.Google.Prelude: type ReadS a = String -> [(a, String)]
- Network.Google.Prelude: type ReqBody = ReqBody' Required : Strict : ([] :: [Type])
- Network.Google.Prelude: type ShowS = String -> String
- Network.Google.Prelude: type SourceIO = SourceT IO
- Network.Google.Prelude: type Stream = ConduitM () ByteString (ResourceT IO) ()
- Network.Google.Prelude: type StreamBody = StreamBody' ([] :: [Type])
- Network.Google.Prelude: type StreamGet = Stream GET 200
- Network.Google.Prelude: type StreamPost = Stream POST 200
- Network.Google.Prelude: type String = [Char]
- Network.Google.Prelude: type Vault = Vault RealWorld
- Network.Google.Prelude: type family Scopes a :: [Symbol];
- Network.Google.Prelude: uncurry :: () => (a -> b -> c) -> (a, b) -> c
- Network.Google.Prelude: undefined :: HasCallStack => a
- Network.Google.Prelude: unlines :: [String] -> String
- Network.Google.Prelude: until :: () => (a -> Bool) -> (a -> a) -> a -> a
- Network.Google.Prelude: unwords :: [String] -> String
- Network.Google.Prelude: unzip :: () => [(a, b)] -> ([a], [b])
- Network.Google.Prelude: unzip3 :: () => [(a, b, c)] -> ([a], [b], [c])
- Network.Google.Prelude: userError :: String -> IOError
- Network.Google.Prelude: withObject :: () => String -> (Object -> Parser a) -> Value -> Parser a
- Network.Google.Prelude: words :: String -> [String]
- Network.Google.Prelude: writeFile :: FilePath -> String -> IO ()
- Network.Google.Prelude: zip :: () => [a] -> [b] -> [(a, b)]
- Network.Google.Prelude: zip3 :: () => [a] -> [b] -> [c] -> [(a, b, c)]
- Network.Google.Prelude: zipWith :: () => (a -> b -> c) -> [a] -> [b] -> [c]
- Network.Google.Prelude: zipWith3 :: () => (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
- Network.Google.Prelude: }
- Network.Google.Types: AccessToken :: Text -> AccessToken
- Network.Google.Types: AltJSON :: AltJSON
- Network.Google.Types: AltMedia :: AltMedia
- Network.Google.Types: ClientId :: Text -> ClientId
- Network.Google.Types: GBody :: !MediaType -> !RequestBody -> GBody
- Network.Google.Types: GClient :: !Maybe MediaType -> !Method -> !Status -> Bool -> !ServiceConfig -> !Request -> !Stream -> ResourceT IO (Either (String, ByteString) a) -> GClient a
- Network.Google.Types: GFieldMask :: Text -> GFieldMask
- Network.Google.Types: GSecret :: Text -> GSecret
- Network.Google.Types: MediaDownload :: a -> MediaDownload a
- Network.Google.Types: MediaUpload :: a -> GBody -> MediaUpload a
- Network.Google.Types: Multipart :: Multipart
- Network.Google.Types: OAuthScope :: Text -> OAuthScope
- Network.Google.Types: RefreshToken :: Text -> RefreshToken
- Network.Google.Types: Request :: !Builder -> !DList (ByteString, Maybe ByteString) -> !DList (HeaderName, ByteString) -> ![GBody] -> Request
- Network.Google.Types: Seconds :: Int -> Seconds
- Network.Google.Types: SerializeError :: SerializeError -> Error
- Network.Google.Types: SerializeError' :: !ServiceId -> [Header] -> !Status -> !String -> !Maybe ByteString -> SerializeError
- Network.Google.Types: ServiceConfig :: !ServiceId -> !ByteString -> !Builder -> !Int -> !Bool -> !Maybe Seconds -> ServiceConfig
- Network.Google.Types: ServiceError :: ServiceError -> Error
- Network.Google.Types: ServiceError' :: !ServiceId -> !Status -> ![Header] -> !Maybe ByteString -> ServiceError
- Network.Google.Types: ServiceId :: Text -> ServiceId
- Network.Google.Types: TransportError :: HttpException -> Error
- Network.Google.Types: [_cliAccept] :: GClient a -> !Maybe MediaType
- Network.Google.Types: [_cliCheck] :: GClient a -> !Status -> Bool
- Network.Google.Types: [_cliMethod] :: GClient a -> !Method
- Network.Google.Types: [_cliRequest] :: GClient a -> !Request
- Network.Google.Types: [_cliResponse] :: GClient a -> !Stream -> ResourceT IO (Either (String, ByteString) a)
- Network.Google.Types: [_cliService] :: GClient a -> !ServiceConfig
- Network.Google.Types: [_rqBody] :: Request -> ![GBody]
- Network.Google.Types: [_rqHeaders] :: Request -> !DList (HeaderName, ByteString)
- Network.Google.Types: [_rqPath] :: Request -> !Builder
- Network.Google.Types: [_rqQuery] :: Request -> !DList (ByteString, Maybe ByteString)
- Network.Google.Types: [_serializeBody] :: SerializeError -> !Maybe ByteString
- Network.Google.Types: [_serializeHeaders] :: SerializeError -> [Header]
- Network.Google.Types: [_serializeId] :: SerializeError -> !ServiceId
- Network.Google.Types: [_serializeMessage] :: SerializeError -> !String
- Network.Google.Types: [_serializeStatus] :: SerializeError -> !Status
- Network.Google.Types: [_serviceBody] :: ServiceError -> !Maybe ByteString
- Network.Google.Types: [_serviceHeaders] :: ServiceError -> ![Header]
- Network.Google.Types: [_serviceId] :: ServiceError -> !ServiceId
- Network.Google.Types: [_serviceStatus] :: ServiceError -> !Status
- Network.Google.Types: [_svcHost] :: ServiceConfig -> !ByteString
- Network.Google.Types: [_svcId] :: ServiceConfig -> !ServiceId
- Network.Google.Types: [_svcPath] :: ServiceConfig -> !Builder
- Network.Google.Types: [_svcPort] :: ServiceConfig -> !Int
- Network.Google.Types: [_svcSecure] :: ServiceConfig -> !Bool
- Network.Google.Types: [_svcTimeout] :: ServiceConfig -> !Maybe Seconds
- Network.Google.Types: _Coerce :: (Coercible a b, Coercible b a) => Iso' a b
- Network.Google.Types: _Default :: Monoid a => Iso' (Maybe a) a
- Network.Google.Types: _Error :: AsError a => Prism' a Error
- Network.Google.Types: _SerializeError :: AsError a => Prism' a SerializeError
- Network.Google.Types: _ServiceError :: AsError a => Prism' a ServiceError
- Network.Google.Types: _TransportError :: AsError a => Prism' a HttpException
- Network.Google.Types: appendHeader :: Request -> HeaderName -> Maybe Text -> Request
- Network.Google.Types: appendPath :: Request -> Builder -> Request
- Network.Google.Types: appendPaths :: ToHttpApiData a => Request -> [a] -> Request
- Network.Google.Types: appendQuery :: Request -> ByteString -> Maybe Text -> Request
- Network.Google.Types: bodyContentType :: Lens' GBody MediaType
- Network.Google.Types: buildClient :: GoogleClient fn => Proxy fn -> Request -> Fn fn
- Network.Google.Types: buildSymbol :: forall n proxy. KnownSymbol n => proxy n -> Builder
- Network.Google.Types: buildText :: ToHttpApiData a => a -> Builder
- Network.Google.Types: byteSymbol :: forall n proxy. KnownSymbol n => proxy n -> ByteString
- Network.Google.Types: class AsError a
- Network.Google.Types: class Accept c => FromStream c a
- Network.Google.Types: class GoogleClient fn where {
- Network.Google.Types: class GoogleRequest a where {
- Network.Google.Types: class Accept c => ToBody c a
- Network.Google.Types: clientService :: Lens' (GClient a) ServiceConfig
- Network.Google.Types: data AltJSON
- Network.Google.Types: data AltMedia
- Network.Google.Types: data CaptureMode (s :: Symbol) (m :: Symbol) a
- Network.Google.Types: data Captures (s :: Symbol) a
- Network.Google.Types: data Error
- Network.Google.Types: data GBody
- Network.Google.Types: data GClient a
- Network.Google.Types: data MediaUpload a
- Network.Google.Types: data Multipart
- Network.Google.Types: data MultipartRelated (cs :: [*]) m
- Network.Google.Types: data Request
- Network.Google.Types: data SerializeError
- Network.Google.Types: data ServiceConfig
- Network.Google.Types: data ServiceError
- Network.Google.Types: defaultService :: ServiceId -> ByteString -> ServiceConfig
- Network.Google.Types: discard :: Method -> [Int] -> Request -> ServiceConfig -> GClient ()
- Network.Google.Types: fromStream :: FromStream c a => Proxy c -> Stream -> ResourceT IO (Either (String, ByteString) a)
- Network.Google.Types: gClient :: (Stream -> ResourceT IO (Either (String, ByteString) a)) -> Maybe MediaType -> Method -> [Int] -> Request -> ServiceConfig -> GClient a
- Network.Google.Types: instance (GHC.TypeLits.KnownSymbol s, GHC.TypeLits.KnownSymbol m, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Network.Google.Types.CaptureMode s m a Servant.API.Sub.:> fn)
- Network.Google.Types: instance (GHC.TypeLits.KnownSymbol s, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (s Servant.API.Sub.:> fn)
- Network.Google.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Network.Google.Types.Captures s a Servant.API.Sub.:> fn)
- Network.Google.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.Capture.Capture s a Servant.API.Sub.:> fn)
- Network.Google.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.Header.Header s a Servant.API.Sub.:> fn)
- Network.Google.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.QueryParam.QueryParam s a Servant.API.Sub.:> fn)
- Network.Google.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.QueryParam.QueryParams s a Servant.API.Sub.:> fn)
- Network.Google.Types: instance (Network.Google.Types.FromStream c a, cs' Data.Type.Equality.~ (c : cs)) => Network.Google.Types.GoogleClient (Servant.API.Verbs.Post cs' a)
- Network.Google.Types: instance (Network.Google.Types.GoogleClient a, Network.Google.Types.GoogleClient b) => Network.Google.Types.GoogleClient (a Servant.API.Alternative.:<|> b)
- Network.Google.Types: instance (Network.Google.Types.ToBody c a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.ReqBody.ReqBody (c : cs) a Servant.API.Sub.:> fn)
- Network.Google.Types: instance (Network.Google.Types.ToBody c m, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Network.Google.Types.MultipartRelated (c : cs) m Servant.API.Sub.:> fn)
- Network.Google.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.AccessToken
- Network.Google.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.ClientId
- Network.Google.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.GFieldMask
- Network.Google.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.GSecret
- Network.Google.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.OAuthScope
- Network.Google.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.RefreshToken
- Network.Google.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.ServiceId
- Network.Google.Types: instance Data.Aeson.Types.FromJSON.FromJSON a => Network.Google.Types.FromStream Servant.API.ContentTypes.JSON a
- Network.Google.Types: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.AccessToken
- Network.Google.Types: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.ClientId
- Network.Google.Types: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.GFieldMask
- Network.Google.Types: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.GSecret
- Network.Google.Types: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.OAuthScope
- Network.Google.Types: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.RefreshToken
- Network.Google.Types: instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.ServiceId
- Network.Google.Types: instance Data.Aeson.Types.ToJSON.ToJSON a => Network.Google.Types.ToBody Servant.API.ContentTypes.JSON a
- Network.Google.Types: instance Data.Data.Data Network.Google.Types.GFieldMask
- Network.Google.Types: instance Data.Data.Data Network.Google.Types.Seconds
- Network.Google.Types: instance Data.String.IsString Network.Google.Types.AccessToken
- Network.Google.Types: instance Data.String.IsString Network.Google.Types.ClientId
- Network.Google.Types: instance Data.String.IsString Network.Google.Types.GBody
- Network.Google.Types: instance Data.String.IsString Network.Google.Types.GFieldMask
- Network.Google.Types: instance Data.String.IsString Network.Google.Types.GSecret
- Network.Google.Types: instance Data.String.IsString Network.Google.Types.OAuthScope
- Network.Google.Types: instance Data.String.IsString Network.Google.Types.RefreshToken
- Network.Google.Types: instance Data.String.IsString Network.Google.Types.ServiceId
- Network.Google.Types: instance GHC.Base.Monoid Network.Google.Types.Request
- Network.Google.Types: instance GHC.Base.Semigroup Network.Google.Types.Request
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.AccessToken
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.AltJSON
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.AltMedia
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.ClientId
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.GFieldMask
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.GSecret
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.Multipart
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.OAuthScope
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.RefreshToken
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.SerializeError
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.ServiceError
- Network.Google.Types: instance GHC.Classes.Eq Network.Google.Types.ServiceId
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.AccessToken
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.AltJSON
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.AltMedia
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.ClientId
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.GFieldMask
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.GSecret
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.Multipart
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.OAuthScope
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.RefreshToken
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Classes.Ord Network.Google.Types.ServiceId
- Network.Google.Types: instance GHC.Enum.Bounded Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Enum.Enum Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Exception.Type.Exception Network.Google.Types.Error
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.AccessToken
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.AltJSON
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.AltMedia
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.ClientId
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.GFieldMask
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.GSecret
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.Multipart
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.OAuthScope
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.RefreshToken
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Generics.Generic Network.Google.Types.ServiceId
- Network.Google.Types: instance GHC.Num.Num Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.AccessToken
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.AltJSON
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.AltMedia
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.ClientId
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.GFieldMask
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.GSecret
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.Multipart
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.OAuthScope
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.RefreshToken
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Read.Read Network.Google.Types.ServiceId
- Network.Google.Types: instance GHC.Real.Integral Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Real.Real Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.AccessToken
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.AltJSON
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.AltMedia
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.ClientId
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.Error
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.GFieldMask
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.GSecret
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.Multipart
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.OAuthScope
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.RefreshToken
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.Seconds
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.SerializeError
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.ServiceError
- Network.Google.Types: instance GHC.Show.Show Network.Google.Types.ServiceId
- Network.Google.Types: instance Network.Google.Types.AsError GHC.Exception.Type.SomeException
- Network.Google.Types: instance Network.Google.Types.AsError Network.Google.Types.Error
- Network.Google.Types: instance Network.Google.Types.FromStream Servant.API.ContentTypes.OctetStream Network.Google.Types.Stream
- Network.Google.Types: instance Network.Google.Types.FromStream c a => Network.Google.Types.GoogleClient (Servant.API.Verbs.Delete (c : cs) a)
- Network.Google.Types: instance Network.Google.Types.FromStream c a => Network.Google.Types.GoogleClient (Servant.API.Verbs.Get (c : cs) a)
- Network.Google.Types: instance Network.Google.Types.FromStream c a => Network.Google.Types.GoogleClient (Servant.API.Verbs.Patch (c : cs) a)
- Network.Google.Types: instance Network.Google.Types.FromStream c a => Network.Google.Types.GoogleClient (Servant.API.Verbs.Put (c : cs) a)
- Network.Google.Types: instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Delete (c : cs) ())
- Network.Google.Types: instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Get (c : cs) ())
- Network.Google.Types: instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Patch (c : cs) ())
- Network.Google.Types: instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Post cs ())
- Network.Google.Types: instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Put (c : cs) ())
- Network.Google.Types: instance Network.Google.Types.GoogleClient fn => Network.Google.Types.GoogleClient (Network.Google.Types.AltMedia Servant.API.Sub.:> fn)
- Network.Google.Types: instance Network.Google.Types.ToBody Servant.API.ContentTypes.OctetStream Data.ByteString.Internal.ByteString
- Network.Google.Types: instance Network.Google.Types.ToBody Servant.API.ContentTypes.OctetStream Data.ByteString.Lazy.Internal.ByteString
- Network.Google.Types: instance Network.Google.Types.ToBody Servant.API.ContentTypes.PlainText Data.ByteString.Internal.ByteString
- Network.Google.Types: instance Network.Google.Types.ToBody Servant.API.ContentTypes.PlainText Data.ByteString.Lazy.Internal.ByteString
- Network.Google.Types: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.AccessToken
- Network.Google.Types: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.ClientId
- Network.Google.Types: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.GFieldMask
- Network.Google.Types: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.GSecret
- Network.Google.Types: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.OAuthScope
- Network.Google.Types: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.RefreshToken
- Network.Google.Types: instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.ServiceId
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.AccessToken
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.AltJSON
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.AltMedia
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.ClientId
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.GFieldMask
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.GSecret
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.Multipart
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.OAuthScope
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.RefreshToken
- Network.Google.Types: instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.ServiceId
- Network.Google.Types: microseconds :: Seconds -> Int
- Network.Google.Types: mime :: FromStream c a => Proxy c -> Method -> [Int] -> Request -> ServiceConfig -> GClient a
- Network.Google.Types: newtype AccessToken
- Network.Google.Types: newtype ClientId
- Network.Google.Types: newtype GFieldMask
- Network.Google.Types: newtype GSecret
- Network.Google.Types: newtype MediaDownload a
- Network.Google.Types: newtype OAuthScope
- Network.Google.Types: newtype RefreshToken
- Network.Google.Types: newtype Seconds
- Network.Google.Types: newtype ServiceId
- Network.Google.Types: requestClient :: GoogleRequest a => a -> GClient (Rs a)
- Network.Google.Types: seconds :: Seconds -> Int
- Network.Google.Types: serviceHost :: Lens' ServiceConfig ByteString
- Network.Google.Types: servicePath :: Lens' ServiceConfig Builder
- Network.Google.Types: servicePort :: Lens' ServiceConfig Int
- Network.Google.Types: serviceSecure :: Lens' ServiceConfig Bool
- Network.Google.Types: serviceTimeout :: Lens' ServiceConfig (Maybe Seconds)
- Network.Google.Types: setBody :: Request -> [GBody] -> Request
- Network.Google.Types: sinkLBS :: Stream -> ResourceT IO ByteString
- Network.Google.Types: toBody :: ToBody c a => Proxy c -> a -> GBody
- Network.Google.Types: type Stream = ConduitM () ByteString (ResourceT IO) ()
- Network.Google.Types: type family Fn fn :: *;
- Network.Google.Types: }
+ Gogol.Data.Base64: Base64 :: ByteString -> Base64
+ Gogol.Data.Base64: [fromBase64] :: Base64 -> ByteString
+ Gogol.Data.Base64: _Base64 :: Iso' Base64 ByteString
+ Gogol.Data.Base64: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: instance Data.Hashable.Class.Hashable Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: instance GHC.Classes.Eq Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: instance GHC.Classes.Ord Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: instance GHC.Generics.Generic Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: instance GHC.Read.Read Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: instance GHC.Show.Show Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Data.Base64.Base64
+ Gogol.Data.Base64: newtype Base64
+ Gogol.Data.JSON: ($dmfromJSONKey) :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction a
+ Gogol.Data.JSON: ($dmfromJSONKeyList) :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction [a]
+ Gogol.Data.JSON: ($dmparseJSON) :: (FromJSON a, Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a
+ Gogol.Data.JSON: ($dmtoJSON) :: (ToJSON a, Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
+ Gogol.Data.JSON: ($dmtoJSONKey) :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction a
+ Gogol.Data.JSON: ($dmtoJSONKeyList) :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction [a]
+ Gogol.Data.JSON: (.!=) :: Parser (Maybe a) -> a -> Parser a
+ Gogol.Data.JSON: (.:) :: FromJSON a => Object -> Key -> Parser a
+ Gogol.Data.JSON: (.:?) :: FromJSON a => Object -> Key -> Parser (Maybe a)
+ Gogol.Data.JSON: (.=) :: (KeyValue e kv, ToJSON v) => Key -> v -> kv
+ Gogol.Data.JSON: AsText :: a -> AsText a
+ Gogol.Data.JSON: [fromAsText] :: AsText a -> a
+ Gogol.Data.JSON: class FromJSON a
+ Gogol.Data.JSON: class FromJSONKey a
+ Gogol.Data.JSON: class ToJSON a
+ Gogol.Data.JSON: class ToJSONKey a
+ Gogol.Data.JSON: data Value
+ Gogol.Data.JSON: emptyObject :: Value
+ Gogol.Data.JSON: fromJSONKey :: FromJSONKey a => FromJSONKeyFunction a
+ Gogol.Data.JSON: fromJSONKeyList :: FromJSONKey a => FromJSONKeyFunction [a]
+ Gogol.Data.JSON: infixr 8 .=
+ Gogol.Data.JSON: instance (Data.Aeson.Types.FromJSON.FromJSON a, Web.Internal.HttpApiData.FromHttpApiData a) => Data.Aeson.Types.FromJSON.FromJSON (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: instance GHC.Classes.Eq a => GHC.Classes.Eq (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: instance GHC.Classes.Ord a => GHC.Classes.Ord (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: instance GHC.Num.Num a => GHC.Num.Num (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: instance GHC.Read.Read a => GHC.Read.Read (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: instance GHC.Real.Fractional a => GHC.Real.Fractional (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: instance GHC.Show.Show a => GHC.Show.Show (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: instance Web.Internal.HttpApiData.FromHttpApiData a => Web.Internal.HttpApiData.FromHttpApiData (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: instance Web.Internal.HttpApiData.ToHttpApiData a => Data.Aeson.Types.ToJSON.ToJSON (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: instance Web.Internal.HttpApiData.ToHttpApiData a => Web.Internal.HttpApiData.ToHttpApiData (Gogol.Data.JSON.AsText a)
+ Gogol.Data.JSON: newtype AsText a
+ Gogol.Data.JSON: object :: [Pair] -> Value
+ Gogol.Data.JSON: omitField :: ToJSON a => a -> Bool
+ Gogol.Data.JSON: omittedField :: FromJSON a => Maybe a
+ Gogol.Data.JSON: parseJSON :: FromJSON a => Value -> Parser a
+ Gogol.Data.JSON: parseJSONList :: FromJSON a => Value -> Parser [a]
+ Gogol.Data.JSON: parseJSONObject :: FromJSON a => KeyMap Value -> Parser a
+ Gogol.Data.JSON: parseJSONText :: FromHttpApiData a => String -> Value -> Parser a
+ Gogol.Data.JSON: toEncoding :: ToJSON a => a -> Encoding
+ Gogol.Data.JSON: toEncodingList :: ToJSON a => [a] -> Encoding
+ Gogol.Data.JSON: toJSON :: ToJSON a => a -> Value
+ Gogol.Data.JSON: toJSONKey :: ToJSONKey a => ToJSONKeyFunction a
+ Gogol.Data.JSON: toJSONKeyList :: ToJSONKey a => ToJSONKeyFunction [a]
+ Gogol.Data.JSON: toJSONList :: ToJSON a => [a] -> Value
+ Gogol.Data.JSON: toJSONText :: ToHttpApiData a => a -> Value
+ Gogol.Data.JSON: withObject :: String -> (Object -> Parser a) -> Value -> Parser a
+ Gogol.Data.Time: Date :: Day -> Date
+ Gogol.Data.Time: DateTime :: UTCTime -> DateTime
+ Gogol.Data.Time: Duration :: Scientific -> Duration
+ Gogol.Data.Time: Time :: TimeOfDay -> Time
+ Gogol.Data.Time: [fromTime] :: Time -> TimeOfDay
+ Gogol.Data.Time: [unDateTime] :: DateTime -> UTCTime
+ Gogol.Data.Time: [unDate] :: Date -> Day
+ Gogol.Data.Time: [unDuration] :: Duration -> Scientific
+ Gogol.Data.Time: _Date :: Iso' Date Day
+ Gogol.Data.Time: _DateTime :: Iso' DateTime UTCTime
+ Gogol.Data.Time: _Duration :: Iso' Duration Scientific
+ Gogol.Data.Time: _Time :: Iso' Time TimeOfDay
+ Gogol.Data.Time: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Data.Time.Date
+ Gogol.Data.Time: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Data.Time.DateTime
+ Gogol.Data.Time: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Data.Time.Duration
+ Gogol.Data.Time: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Data.Time.Time
+ Gogol.Data.Time: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Data.Time.Date
+ Gogol.Data.Time: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Data.Time.DateTime
+ Gogol.Data.Time: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Data.Time.Duration
+ Gogol.Data.Time: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Data.Time.Time
+ Gogol.Data.Time: instance GHC.Classes.Eq Gogol.Data.Time.Date
+ Gogol.Data.Time: instance GHC.Classes.Eq Gogol.Data.Time.DateTime
+ Gogol.Data.Time: instance GHC.Classes.Eq Gogol.Data.Time.Duration
+ Gogol.Data.Time: instance GHC.Classes.Eq Gogol.Data.Time.Time
+ Gogol.Data.Time: instance GHC.Classes.Ord Gogol.Data.Time.Date
+ Gogol.Data.Time: instance GHC.Classes.Ord Gogol.Data.Time.DateTime
+ Gogol.Data.Time: instance GHC.Classes.Ord Gogol.Data.Time.Duration
+ Gogol.Data.Time: instance GHC.Classes.Ord Gogol.Data.Time.Time
+ Gogol.Data.Time: instance GHC.Generics.Generic Gogol.Data.Time.Date
+ Gogol.Data.Time: instance GHC.Generics.Generic Gogol.Data.Time.DateTime
+ Gogol.Data.Time: instance GHC.Generics.Generic Gogol.Data.Time.Duration
+ Gogol.Data.Time: instance GHC.Generics.Generic Gogol.Data.Time.Time
+ Gogol.Data.Time: instance GHC.Read.Read Gogol.Data.Time.Date
+ Gogol.Data.Time: instance GHC.Read.Read Gogol.Data.Time.DateTime
+ Gogol.Data.Time: instance GHC.Read.Read Gogol.Data.Time.Duration
+ Gogol.Data.Time: instance GHC.Read.Read Gogol.Data.Time.Time
+ Gogol.Data.Time: instance GHC.Show.Show Gogol.Data.Time.Date
+ Gogol.Data.Time: instance GHC.Show.Show Gogol.Data.Time.DateTime
+ Gogol.Data.Time: instance GHC.Show.Show Gogol.Data.Time.Duration
+ Gogol.Data.Time: instance GHC.Show.Show Gogol.Data.Time.Time
+ Gogol.Data.Time: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Data.Time.Date
+ Gogol.Data.Time: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Data.Time.DateTime
+ Gogol.Data.Time: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Data.Time.Duration
+ Gogol.Data.Time: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Data.Time.Time
+ Gogol.Data.Time: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Data.Time.Date
+ Gogol.Data.Time: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Data.Time.DateTime
+ Gogol.Data.Time: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Data.Time.Duration
+ Gogol.Data.Time: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Data.Time.Time
+ Gogol.Data.Time: newtype Date
+ Gogol.Data.Time: newtype DateTime
+ Gogol.Data.Time: newtype Duration
+ Gogol.Data.Time: newtype Time
+ Gogol.Prelude: (#) :: AReview t b -> b -> t
+ Gogol.Prelude: ($dmhashWithSalt) :: (Hashable a, Generic a, GHashable Zero (Rep a)) => Int -> a -> Int
+ Gogol.Prelude: (:<|>) :: a -> b -> (:<|>) a b
+ Gogol.Prelude: (<&>) :: Functor f => f a -> (a -> b) -> f b
+ Gogol.Prelude: (^.) :: s -> Getting a s a -> a
+ Gogol.Prelude: ArrayElemParam :: String -> Text -> Param
+ Gogol.Prelude: BasicAuthData :: !ByteString -> !ByteString -> BasicAuthData
+ Gogol.Prelude: CONNECT :: StdMethod
+ Gogol.Prelude: DELETE :: StdMethod
+ Gogol.Prelude: EmptyAPI :: EmptyAPI
+ Gogol.Prelude: FlagParam :: String -> Param
+ Gogol.Prelude: GET :: StdMethod
+ Gogol.Prelude: HEAD :: StdMethod
+ Gogol.Prelude: HttpVersion :: !Int -> !Int -> HttpVersion
+ Gogol.Prelude: LinkArrayElementBracket :: LinkArrayElementStyle
+ Gogol.Prelude: LinkArrayElementPlain :: LinkArrayElementStyle
+ Gogol.Prelude: NoContent :: NoContent
+ Gogol.Prelude: NotSecure :: IsSecure
+ Gogol.Prelude: OPTIONS :: StdMethod
+ Gogol.Prelude: PATCH :: StdMethod
+ Gogol.Prelude: POST :: StdMethod
+ Gogol.Prelude: PUT :: StdMethod
+ Gogol.Prelude: Secure :: IsSecure
+ Gogol.Prelude: SingleParam :: String -> Text -> Param
+ Gogol.Prelude: TRACE :: StdMethod
+ Gogol.Prelude: URI :: String -> Maybe URIAuth -> String -> String -> String -> URI
+ Gogol.Prelude: WithStatus :: a -> WithStatus (k :: Nat) a
+ Gogol.Prelude: [HCons] :: forall (h :: Symbol) x (xs :: [Type]) (mods :: [Type]). ResponseHeader h x -> HList xs -> HList (Header' mods h x ': xs)
+ Gogol.Prelude: [HNil] :: HList ('[] :: [Type])
+ Gogol.Prelude: [SFalse] :: SBool 'False
+ Gogol.Prelude: [STrue] :: SBool 'True
+ Gogol.Prelude: [basicAuthPassword] :: BasicAuthData -> !ByteString
+ Gogol.Prelude: [basicAuthUsername] :: BasicAuthData -> !ByteString
+ Gogol.Prelude: [httpMajor] :: HttpVersion -> !Int
+ Gogol.Prelude: [httpMinor] :: HttpVersion -> !Int
+ Gogol.Prelude: [uriAuthority] :: URI -> Maybe URIAuth
+ Gogol.Prelude: [uriFragment] :: URI -> String
+ Gogol.Prelude: [uriPath] :: URI -> String
+ Gogol.Prelude: [uriQuery] :: URI -> String
+ Gogol.Prelude: [uriScheme] :: URI -> String
+ Gogol.Prelude: _Just :: forall a b p f. (Choice p, Applicative f) => p a (f b) -> p (Maybe a) (f (Maybe b))
+ Gogol.Prelude: addHeader :: forall (h :: Symbol) v orig new. AddHeader '[Optional, Strict] h v orig new => v -> orig -> new
+ Gogol.Prelude: addHeader' :: forall (mods :: [Type]) (h :: Symbol) v orig new. AddHeader mods h v orig new => v -> orig -> new
+ Gogol.Prelude: allFieldLinks :: (HasLink (ToServantApi routes), GenericServant routes (AsLink Link), ToServant routes (AsLink Link) ~ MkLink (ToServantApi routes) Link) => routes (AsLink Link)
+ Gogol.Prelude: allFieldLinks' :: (HasLink (ToServantApi routes), GenericServant routes (AsLink a), ToServant routes (AsLink a) ~ MkLink (ToServantApi routes) a) => (Link -> a) -> routes (AsLink a)
+ Gogol.Prelude: allLinks :: forall {k} (api :: k). HasLink api => Proxy api -> MkLink api Link
+ Gogol.Prelude: allLinks' :: forall {k} (api :: k) a. HasLink api => (Link -> a) -> Proxy api -> MkLink api a
+ Gogol.Prelude: buildHeadersTo :: BuildHeadersTo hs => [Header] -> HList hs
+ Gogol.Prelude: class Accept (ctype :: k)
+ Gogol.Prelude: class AddHeader (mods :: [Type]) (h :: Symbol) v orig new | mods h v orig -> new, new -> mods, new -> h, new -> v, new -> orig
+ Gogol.Prelude: class FragmentUnique api => AtMostOneFragment api
+ Gogol.Prelude: class BuildHeadersTo (hs :: [Type])
+ Gogol.Prelude: class Typeable a => Data a
+ Gogol.Prelude: class FramingRender (strategy :: k)
+ Gogol.Prelude: class FramingUnrender (strategy :: k)
+ Gogol.Prelude: class FromHttpApiData a
+ Gogol.Prelude: class FromSourceIO chunk a | a -> chunk
+ Gogol.Prelude: class GServantProduct (f :: k -> Type)
+ Gogol.Prelude: class Generic a
+ Gogol.Prelude: class GenericMode (mode :: k) where {
+ Gogol.Prelude: class GetHeaders ls
+ Gogol.Prelude: class HasLink (endpoint :: k) where {
+ Gogol.Prelude: class HasResponseHeader (h :: Symbol) a (headers :: [Type])
+ Gogol.Prelude: class KnownStatus StatusOf a => HasStatus a where {
+ Gogol.Prelude: class Eq a => Hashable a
+ Gogol.Prelude: class Accept ctype => MimeRender (ctype :: k) a
+ Gogol.Prelude: class Accept ctype => MimeUnrender (ctype :: k) a
+ Gogol.Prelude: class ReflectMethod (a :: k)
+ Gogol.Prelude: class SBoolI (b :: Bool)
+ Gogol.Prelude: class ToHttpApiData a
+ Gogol.Prelude: class ToSourceIO chunk a | a -> chunk
+ Gogol.Prelude: class Typeable (a :: k)
+ Gogol.Prelude: contentType :: Accept ctype => Proxy ctype -> MediaType
+ Gogol.Prelude: contentTypes :: Accept ctype => Proxy ctype -> NonEmpty MediaType
+ Gogol.Prelude: data (path :: k) :> a
+ Gogol.Prelude: data AsApi
+ Gogol.Prelude: data AsLink a
+ Gogol.Prelude: data AuthProtect (tag :: k)
+ Gogol.Prelude: data BasicAuth (realm :: Symbol) userData
+ Gogol.Prelude: data BasicAuthData
+ Gogol.Prelude: data ByteString
+ Gogol.Prelude: data Capture' (mods :: [Type]) (sym :: Symbol) a
+ Gogol.Prelude: data CaptureAll (sym :: Symbol) a
+ Gogol.Prelude: data Day
+ Gogol.Prelude: data DeepQuery (sym :: Symbol) a
+ Gogol.Prelude: data Description (sym :: Symbol)
+ Gogol.Prelude: data EmptyAPI
+ Gogol.Prelude: data FormUrlEncoded
+ Gogol.Prelude: data Fragment a
+ Gogol.Prelude: data HList (a :: [Type])
+ Gogol.Prelude: data HashMap k v
+ Gogol.Prelude: data Header' (mods :: [Type]) (sym :: Symbol) a
+ Gogol.Prelude: data HttpVersion
+ Gogol.Prelude: data Int32
+ Gogol.Prelude: data Int64
+ Gogol.Prelude: data IsSecure
+ Gogol.Prelude: data JSON
+ Gogol.Prelude: data Lenient
+ Gogol.Prelude: data LinkArrayElementStyle
+ Gogol.Prelude: data NamedRoutes (api :: Type -> Type)
+ Gogol.Prelude: data Natural
+ Gogol.Prelude: data NetstringFraming
+ Gogol.Prelude: data NewlineFraming
+ Gogol.Prelude: data NoContent
+ Gogol.Prelude: data NoContentVerb (method :: k1)
+ Gogol.Prelude: data NoFraming
+ Gogol.Prelude: data OctetStream
+ Gogol.Prelude: data Optional
+ Gogol.Prelude: data Param
+ Gogol.Prelude: data PlainText
+ Gogol.Prelude: data QueryFlag (sym :: Symbol)
+ Gogol.Prelude: data QueryParam' (mods :: [Type]) (sym :: Symbol) a
+ Gogol.Prelude: data QueryParams (sym :: Symbol) a
+ Gogol.Prelude: data QueryString
+ Gogol.Prelude: data Raw
+ Gogol.Prelude: data RawM
+ Gogol.Prelude: data RemoteHost
+ Gogol.Prelude: data ReqBody' (mods :: [Type]) (contentTypes :: [Type]) a
+ Gogol.Prelude: data RequestBody
+ Gogol.Prelude: data Required
+ Gogol.Prelude: data SBool (b :: Bool)
+ Gogol.Prelude: data Scientific
+ Gogol.Prelude: data StdMethod
+ Gogol.Prelude: data StreamBody' (mods :: [Type]) framing contentType a
+ Gogol.Prelude: data Strict
+ Gogol.Prelude: data Summary (sym :: Symbol)
+ Gogol.Prelude: data Text
+ Gogol.Prelude: data TimeOfDay
+ Gogol.Prelude: data URI
+ Gogol.Prelude: data UTCTime
+ Gogol.Prelude: data UVerb (method :: StdMethod) (contentTypes :: [Type]) (as :: [Type])
+ Gogol.Prelude: data Verb (method :: k1) (statusCode :: Nat) (contentTypes :: [Type]) a
+ Gogol.Prelude: data WithNamedContext (name :: Symbol) (subContext :: [Type]) (subApi :: k)
+ Gogol.Prelude: data WithResource (res :: k)
+ Gogol.Prelude: data Word32
+ Gogol.Prelude: data Word64
+ Gogol.Prelude: data Word8
+ Gogol.Prelude: data a :<|> b
+ Gogol.Prelude: fieldLink :: (IsElem endpoint (ToServantApi routes), HasLink endpoint, GenericServant routes AsApi) => (routes AsApi -> endpoint) -> MkLink endpoint Link
+ Gogol.Prelude: fieldLink' :: forall routes endpoint a. (IsElem endpoint (ToServantApi routes), HasLink endpoint, GenericServant routes AsApi) => (Link -> a) -> (routes AsApi -> endpoint) -> MkLink endpoint a
+ Gogol.Prelude: framingRender :: forall (m :: Type -> Type) a. (FramingRender strategy, Monad m) => Proxy strategy -> (a -> ByteString) -> SourceT m a -> SourceT m ByteString
+ Gogol.Prelude: framingUnrender :: forall (m :: Type -> Type) a. (FramingUnrender strategy, Monad m) => Proxy strategy -> (ByteString -> Either String a) -> SourceT m ByteString -> SourceT m a
+ Gogol.Prelude: fromServant :: forall {k} routes (mode :: k). GenericServant routes mode => ToServant routes mode -> routes mode
+ Gogol.Prelude: fromSourceIO :: FromSourceIO chunk a => SourceIO chunk -> IO a
+ Gogol.Prelude: genericApi :: forall (routes :: Type -> Type). GenericServant routes AsApi => Proxy routes -> Proxy (ToServantApi routes)
+ Gogol.Prelude: getHeaders :: GetHeaders ls => ls -> [Header]
+ Gogol.Prelude: getHeadersHList :: Headers ls a -> HList ls
+ Gogol.Prelude: hashWithSalt :: Hashable a => Int -> a -> Int
+ Gogol.Prelude: infixl 0 :-
+ Gogol.Prelude: infixl 1 <&>
+ Gogol.Prelude: infixl 8 ^.
+ Gogol.Prelude: infixr 3 :<|>
+ Gogol.Prelude: infixr 4 :>
+ Gogol.Prelude: infixr 8 #
+ Gogol.Prelude: inject :: UElem x xs => f x -> NS f xs
+ Gogol.Prelude: lens :: (s -> a) -> (s -> b -> t) -> Lens s t a b
+ Gogol.Prelude: linkFragment :: Link -> Fragment'
+ Gogol.Prelude: linkQueryParams :: Link -> [Param]
+ Gogol.Prelude: linkSegments :: Link -> [String]
+ Gogol.Prelude: linkURI :: Link -> URI
+ Gogol.Prelude: linkURI' :: LinkArrayElementStyle -> Link -> URI
+ Gogol.Prelude: lookupResponseHeader :: forall (h :: Symbol) a (headers :: [Type]) r. HasResponseHeader h a headers => Headers headers r -> ResponseHeader h a
+ Gogol.Prelude: mapping :: forall (f :: Type -> Type) (g :: Type -> Type) s t a b. (Functor f, Functor g) => AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
+ Gogol.Prelude: mimeRender :: MimeRender ctype a => Proxy ctype -> a -> ByteString
+ Gogol.Prelude: mimeUnrender :: MimeUnrender ctype a => Proxy ctype -> ByteString -> Either String a
+ Gogol.Prelude: mimeUnrenderWithType :: MimeUnrender ctype a => Proxy ctype -> MediaType -> ByteString -> Either String a
+ Gogol.Prelude: newtype WithStatus (k :: Nat) a
+ Gogol.Prelude: noHeader :: forall (h :: Symbol) v orig new. AddHeader '[Optional, Strict] h v orig new => orig -> new
+ Gogol.Prelude: noHeader' :: forall (mods :: [Type]) (h :: Symbol) v orig new. AddHeader mods h v orig new => orig -> new
+ Gogol.Prelude: parseHeader :: FromHttpApiData a => ByteString -> Either Text a
+ Gogol.Prelude: parseQueryParam :: FromHttpApiData a => Text -> Either Text a
+ Gogol.Prelude: parseUrlPiece :: FromHttpApiData a => Text -> Either Text a
+ Gogol.Prelude: pattern UndecodableHeader :: () => ByteString -> ResponseHeader sym a
+ Gogol.Prelude: pattern MissingHeader :: () => ResponseHeader sym a
+ Gogol.Prelude: reflectMethod :: ReflectMethod a => Proxy a -> Method
+ Gogol.Prelude: safeLink :: (IsElem endpoint api, HasLink endpoint) => Proxy api -> Proxy endpoint -> MkLink endpoint Link
+ Gogol.Prelude: safeLink' :: (IsElem endpoint api, HasLink endpoint) => (Link -> a) -> Proxy api -> Proxy endpoint -> MkLink endpoint a
+ Gogol.Prelude: sbool :: SBoolI b => SBool b
+ Gogol.Prelude: statusOf :: HasStatus a => proxy a -> Status
+ Gogol.Prelude: toEncodedQueryParam :: ToHttpApiData a => a -> Builder
+ Gogol.Prelude: toEncodedUrlPiece :: ToHttpApiData a => a -> Builder
+ Gogol.Prelude: toHeader :: ToHttpApiData a => a -> ByteString
+ Gogol.Prelude: toLink :: HasLink endpoint => (Link -> a) -> Proxy endpoint -> Link -> MkLink endpoint a
+ Gogol.Prelude: toQueryParam :: ToHttpApiData a => a -> Text
+ Gogol.Prelude: toServant :: forall {k} routes (mode :: k). GenericServant routes mode => routes mode -> ToServant routes mode
+ Gogol.Prelude: toSourceIO :: ToSourceIO chunk a => a -> SourceIO chunk
+ Gogol.Prelude: toUrlPiece :: ToHttpApiData a => a -> Text
+ Gogol.Prelude: type (mode :: k) :- api;
+ Gogol.Prelude: type Capture = Capture' '[] :: [Type]
+ Gogol.Prelude: type Delete = Verb 'DELETE 200
+ Gogol.Prelude: type DeleteAccepted = Verb 'DELETE 202
+ Gogol.Prelude: type DeleteNoContent = NoContentVerb 'DELETE
+ Gogol.Prelude: type DeleteNonAuthoritative = Verb 'DELETE 203
+ Gogol.Prelude: type Elem (e :: t) (es :: [t]) = ElemGo e es es
+ Gogol.Prelude: type GenericServant (routes :: k -> Type) (mode :: k) = (GenericMode mode, Generic routes mode, GServantProduct Rep routes mode)
+ Gogol.Prelude: type Get = Verb 'GET 200
+ Gogol.Prelude: type GetAccepted = Verb 'GET 202
+ Gogol.Prelude: type GetNoContent = NoContentVerb 'GET
+ Gogol.Prelude: type GetNonAuthoritative = Verb 'GET 203
+ Gogol.Prelude: type GetPartialContent = Verb 'GET 206
+ Gogol.Prelude: type GetResetContent = Verb 'GET 205
+ Gogol.Prelude: type Lens' s a = Lens s s a a
+ Gogol.Prelude: type MkLink (endpoint :: k) a;
+ Gogol.Prelude: type Patch = Verb 'PATCH 200
+ Gogol.Prelude: type PatchAccepted = Verb 'PATCH 202
+ Gogol.Prelude: type PatchNoContent = NoContentVerb 'PATCH
+ Gogol.Prelude: type PatchNonAuthoritative = Verb 'PATCH 203
+ Gogol.Prelude: type Post = Verb 'POST 200
+ Gogol.Prelude: type PostAccepted = Verb 'POST 202
+ Gogol.Prelude: type PostCreated = Verb 'POST 201
+ Gogol.Prelude: type PostNoContent = NoContentVerb 'POST
+ Gogol.Prelude: type PostNonAuthoritative = Verb 'POST 203
+ Gogol.Prelude: type PostResetContent = Verb 'POST 205
+ Gogol.Prelude: type Put = Verb 'PUT 200
+ Gogol.Prelude: type PutAccepted = Verb 'PUT 202
+ Gogol.Prelude: type PutCreated = Verb 'PUT 201
+ Gogol.Prelude: type PutNoContent = NoContentVerb 'PUT
+ Gogol.Prelude: type PutNonAuthoritative = Verb 'PUT 203
+ Gogol.Prelude: type QueryParam = QueryParam' '[Optional, Strict]
+ Gogol.Prelude: type ReqBody = ReqBody' '[Required, Strict]
+ Gogol.Prelude: type SourceIO = SourceT IO
+ Gogol.Prelude: type StatusOf a :: Nat;
+ Gogol.Prelude: type StreamBody = StreamBody' '[] :: [Type]
+ Gogol.Prelude: type StreamGet = Stream 'GET 200
+ Gogol.Prelude: type StreamPost = Stream 'POST 200
+ Gogol.Prelude: type ToServant (routes :: k -> Type) (mode :: k) = GToServant Rep routes mode
+ Gogol.Prelude: type ToServantApi (routes :: Type -> Type) = ToServant routes AsApi
+ Gogol.Prelude: type Vault = Vault RealWorld
+ Gogol.Prelude: type family MkLink (endpoint :: k) a
+ Gogol.Prelude: }
+ Gogol.Types: AccessToken :: Text -> AccessToken
+ Gogol.Types: AltJSON :: AltJSON
+ Gogol.Types: AltMedia :: AltMedia
+ Gogol.Types: ClientId :: Text -> ClientId
+ Gogol.Types: FieldMask :: Text -> FieldMask
+ Gogol.Types: GBody :: !MediaType -> !RequestBody -> GBody
+ Gogol.Types: GClient :: !Maybe MediaType -> !Method -> !Status -> Bool -> !ServiceConfig -> !Request -> !Stream -> ResourceT IO (Either (String, ByteString) a) -> GClient a
+ Gogol.Types: GSecret :: Text -> GSecret
+ Gogol.Types: MediaDownload :: a -> MediaDownload a
+ Gogol.Types: MediaUpload :: a -> GBody -> MediaUpload a
+ Gogol.Types: Multipart :: Multipart
+ Gogol.Types: OAuthScope :: Text -> OAuthScope
+ Gogol.Types: RefreshToken :: Text -> RefreshToken
+ Gogol.Types: Request :: !Builder -> !DList (ByteString, Maybe ByteString) -> !DList (HeaderName, ByteString) -> ![GBody] -> Request
+ Gogol.Types: Seconds :: Int -> Seconds
+ Gogol.Types: SerializeError :: SerializeError -> Error
+ Gogol.Types: SerializeError' :: !ServiceId -> [Header] -> !Status -> !String -> !Maybe ByteString -> SerializeError
+ Gogol.Types: ServiceConfig :: !ServiceId -> !ByteString -> !Builder -> !Int -> !Bool -> !Maybe Seconds -> ServiceConfig
+ Gogol.Types: ServiceError :: ServiceError -> Error
+ Gogol.Types: ServiceError' :: !ServiceId -> !Status -> ![Header] -> !Maybe ByteString -> ServiceError
+ Gogol.Types: ServiceId :: Text -> ServiceId
+ Gogol.Types: TransportError :: HttpException -> Error
+ Gogol.Types: [_cliAccept] :: GClient a -> !Maybe MediaType
+ Gogol.Types: [_cliCheck] :: GClient a -> !Status -> Bool
+ Gogol.Types: [_cliMethod] :: GClient a -> !Method
+ Gogol.Types: [_cliRequest] :: GClient a -> !Request
+ Gogol.Types: [_cliResponse] :: GClient a -> !Stream -> ResourceT IO (Either (String, ByteString) a)
+ Gogol.Types: [_cliService] :: GClient a -> !ServiceConfig
+ Gogol.Types: [_rqBody] :: Request -> ![GBody]
+ Gogol.Types: [_rqHeaders] :: Request -> !DList (HeaderName, ByteString)
+ Gogol.Types: [_rqPath] :: Request -> !Builder
+ Gogol.Types: [_rqQuery] :: Request -> !DList (ByteString, Maybe ByteString)
+ Gogol.Types: [_serializeBody] :: SerializeError -> !Maybe ByteString
+ Gogol.Types: [_serializeHeaders] :: SerializeError -> [Header]
+ Gogol.Types: [_serializeId] :: SerializeError -> !ServiceId
+ Gogol.Types: [_serializeMessage] :: SerializeError -> !String
+ Gogol.Types: [_serializeStatus] :: SerializeError -> !Status
+ Gogol.Types: [_serviceBody] :: ServiceError -> !Maybe ByteString
+ Gogol.Types: [_serviceHeaders] :: ServiceError -> ![Header]
+ Gogol.Types: [_serviceId] :: ServiceError -> !ServiceId
+ Gogol.Types: [_serviceStatus] :: ServiceError -> !Status
+ Gogol.Types: [_svcHost] :: ServiceConfig -> !ByteString
+ Gogol.Types: [_svcId] :: ServiceConfig -> !ServiceId
+ Gogol.Types: [_svcPath] :: ServiceConfig -> !Builder
+ Gogol.Types: [_svcPort] :: ServiceConfig -> !Int
+ Gogol.Types: [_svcSecure] :: ServiceConfig -> !Bool
+ Gogol.Types: [_svcTimeout] :: ServiceConfig -> !Maybe Seconds
+ Gogol.Types: [fromFieldMask] :: FieldMask -> Text
+ Gogol.Types: _Coerce :: (Coercible a b, Coercible b a) => Iso' a b
+ Gogol.Types: _Default :: Monoid a => Iso' (Maybe a) a
+ Gogol.Types: _Error :: AsError a => Prism' a Error
+ Gogol.Types: _SerializeError :: AsError a => Prism' a SerializeError
+ Gogol.Types: _ServiceError :: AsError a => Prism' a ServiceError
+ Gogol.Types: _TransportError :: AsError a => Prism' a HttpException
+ Gogol.Types: appendHeader :: Request -> HeaderName -> Maybe Text -> Request
+ Gogol.Types: appendPath :: Request -> Builder -> Request
+ Gogol.Types: appendPaths :: ToHttpApiData a => Request -> [a] -> Request
+ Gogol.Types: appendQuery :: Request -> ByteString -> Maybe Text -> Request
+ Gogol.Types: bodyContentType :: Lens' GBody MediaType
+ Gogol.Types: buildClient :: GoogleClient fn => Proxy fn -> Request -> Fn fn
+ Gogol.Types: buildSymbol :: forall (n :: Symbol) proxy. KnownSymbol n => proxy n -> Builder
+ Gogol.Types: buildText :: ToHttpApiData a => a -> Builder
+ Gogol.Types: byteSymbol :: forall (n :: Symbol) proxy. KnownSymbol n => proxy n -> ByteString
+ Gogol.Types: class AsError a
+ Gogol.Types: class Accept c => FromStream (c :: k) a
+ Gogol.Types: class GoogleClient (fn :: k) where {
+ Gogol.Types: class GoogleRequest a where {
+ Gogol.Types: class Accept c => ToBody (c :: k) a
+ Gogol.Types: clientService :: forall a f. Functor f => (ServiceConfig -> f ServiceConfig) -> GClient a -> f (GClient a)
+ Gogol.Types: data AltJSON
+ Gogol.Types: data AltMedia
+ Gogol.Types: data CaptureMode (s :: Symbol) (m :: Symbol) (a :: k)
+ Gogol.Types: data Captures (s :: Symbol) (a :: k)
+ Gogol.Types: data Error
+ Gogol.Types: data GBody
+ Gogol.Types: data GClient a
+ Gogol.Types: data MediaUpload a
+ Gogol.Types: data Multipart
+ Gogol.Types: data MultipartRelated (cs :: [Type]) (m :: k)
+ Gogol.Types: data Request
+ Gogol.Types: data SerializeError
+ Gogol.Types: data ServiceConfig
+ Gogol.Types: data ServiceError
+ Gogol.Types: defaultService :: ServiceId -> ByteString -> ServiceConfig
+ Gogol.Types: discard :: Method -> [Int] -> Request -> ServiceConfig -> GClient ()
+ Gogol.Types: fromStream :: FromStream c a => Proxy c -> Stream -> ResourceT IO (Either (String, ByteString) a)
+ Gogol.Types: gClient :: (Stream -> ResourceT IO (Either (String, ByteString) a)) -> Maybe MediaType -> Method -> [Int] -> Request -> ServiceConfig -> GClient a
+ Gogol.Types: instance (GHC.TypeLits.KnownSymbol s, GHC.TypeLits.KnownSymbol m, Web.Internal.HttpApiData.ToHttpApiData a, Gogol.Types.GoogleClient fn) => Gogol.Types.GoogleClient (Gogol.Types.CaptureMode s m a Servant.API.Sub.:> fn)
+ Gogol.Types: instance (GHC.TypeLits.KnownSymbol s, Gogol.Types.GoogleClient fn) => Gogol.Types.GoogleClient (s Servant.API.Sub.:> fn)
+ Gogol.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Gogol.Types.GoogleClient fn) => Gogol.Types.GoogleClient (Gogol.Types.Captures s a Servant.API.Sub.:> fn)
+ Gogol.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Gogol.Types.GoogleClient fn) => Gogol.Types.GoogleClient (Servant.API.Capture.Capture s a Servant.API.Sub.:> fn)
+ Gogol.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Gogol.Types.GoogleClient fn) => Gogol.Types.GoogleClient (Servant.API.Header.Header s a Servant.API.Sub.:> fn)
+ Gogol.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Gogol.Types.GoogleClient fn) => Gogol.Types.GoogleClient (Servant.API.QueryParam.QueryParam s a Servant.API.Sub.:> fn)
+ Gogol.Types: instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Gogol.Types.GoogleClient fn) => Gogol.Types.GoogleClient (Servant.API.QueryParam.QueryParams s a Servant.API.Sub.:> fn)
+ Gogol.Types: instance (Gogol.Types.FromStream c a, cs' GHC.Types.~ (c : cs)) => Gogol.Types.GoogleClient (Servant.API.Verbs.Post cs' a)
+ Gogol.Types: instance (Gogol.Types.GoogleClient a, Gogol.Types.GoogleClient b) => Gogol.Types.GoogleClient (a Servant.API.Alternative.:<|> b)
+ Gogol.Types: instance (Gogol.Types.ToBody c a, Gogol.Types.GoogleClient fn) => Gogol.Types.GoogleClient (Servant.API.ReqBody.ReqBody (c : cs) a Servant.API.Sub.:> fn)
+ Gogol.Types: instance (Gogol.Types.ToBody c m, Gogol.Types.GoogleClient fn) => Gogol.Types.GoogleClient (Gogol.Types.MultipartRelated (c : cs) m Servant.API.Sub.:> fn)
+ Gogol.Types: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Types.AccessToken
+ Gogol.Types: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Types.ClientId
+ Gogol.Types: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Types.FieldMask
+ Gogol.Types: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Types.GSecret
+ Gogol.Types: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Types.OAuthScope
+ Gogol.Types: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Types.RefreshToken
+ Gogol.Types: instance Data.Aeson.Types.FromJSON.FromJSON Gogol.Types.ServiceId
+ Gogol.Types: instance Data.Aeson.Types.FromJSON.FromJSON a => Gogol.Types.FromStream Servant.API.ContentTypes.JSON a
+ Gogol.Types: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Types.AccessToken
+ Gogol.Types: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Types.ClientId
+ Gogol.Types: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Types.FieldMask
+ Gogol.Types: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Types.GSecret
+ Gogol.Types: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Types.OAuthScope
+ Gogol.Types: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Types.RefreshToken
+ Gogol.Types: instance Data.Aeson.Types.ToJSON.ToJSON Gogol.Types.ServiceId
+ Gogol.Types: instance Data.Aeson.Types.ToJSON.ToJSON a => Gogol.Types.ToBody Servant.API.ContentTypes.JSON a
+ Gogol.Types: instance Data.String.IsString Gogol.Types.AccessToken
+ Gogol.Types: instance Data.String.IsString Gogol.Types.ClientId
+ Gogol.Types: instance Data.String.IsString Gogol.Types.FieldMask
+ Gogol.Types: instance Data.String.IsString Gogol.Types.GBody
+ Gogol.Types: instance Data.String.IsString Gogol.Types.GSecret
+ Gogol.Types: instance Data.String.IsString Gogol.Types.OAuthScope
+ Gogol.Types: instance Data.String.IsString Gogol.Types.RefreshToken
+ Gogol.Types: instance Data.String.IsString Gogol.Types.ServiceId
+ Gogol.Types: instance GHC.Base.Monoid Gogol.Types.Request
+ Gogol.Types: instance GHC.Base.Semigroup Gogol.Types.Request
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.AccessToken
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.AltJSON
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.AltMedia
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.ClientId
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.FieldMask
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.GSecret
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.Multipart
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.OAuthScope
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.RefreshToken
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.SerializeError
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.ServiceError
+ Gogol.Types: instance GHC.Classes.Eq Gogol.Types.ServiceId
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.AccessToken
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.AltJSON
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.AltMedia
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.ClientId
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.FieldMask
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.GSecret
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.Multipart
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.OAuthScope
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.RefreshToken
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Classes.Ord Gogol.Types.ServiceId
+ Gogol.Types: instance GHC.Enum.Bounded Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Enum.Enum Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Exception.Type.Exception Gogol.Types.Error
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.AccessToken
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.AltJSON
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.AltMedia
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.ClientId
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.FieldMask
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.GSecret
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.Multipart
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.OAuthScope
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.RefreshToken
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Generics.Generic Gogol.Types.ServiceId
+ Gogol.Types: instance GHC.Num.Num Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.AccessToken
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.AltJSON
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.AltMedia
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.ClientId
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.FieldMask
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.GSecret
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.Multipart
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.OAuthScope
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.RefreshToken
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Read.Read Gogol.Types.ServiceId
+ Gogol.Types: instance GHC.Real.Integral Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Real.Real Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.AccessToken
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.AltJSON
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.AltMedia
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.ClientId
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.Error
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.FieldMask
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.GSecret
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.Multipart
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.OAuthScope
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.RefreshToken
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.Seconds
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.SerializeError
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.ServiceError
+ Gogol.Types: instance GHC.Show.Show Gogol.Types.ServiceId
+ Gogol.Types: instance Gogol.Types.AsError GHC.Exception.Type.SomeException
+ Gogol.Types: instance Gogol.Types.AsError Gogol.Types.Error
+ Gogol.Types: instance Gogol.Types.FromStream Servant.API.ContentTypes.OctetStream Gogol.Types.Stream
+ Gogol.Types: instance Gogol.Types.FromStream c a => Gogol.Types.GoogleClient (Servant.API.Verbs.Delete (c : cs) a)
+ Gogol.Types: instance Gogol.Types.FromStream c a => Gogol.Types.GoogleClient (Servant.API.Verbs.Get (c : cs) a)
+ Gogol.Types: instance Gogol.Types.FromStream c a => Gogol.Types.GoogleClient (Servant.API.Verbs.Patch (c : cs) a)
+ Gogol.Types: instance Gogol.Types.FromStream c a => Gogol.Types.GoogleClient (Servant.API.Verbs.Put (c : cs) a)
+ Gogol.Types: instance Gogol.Types.GoogleClient (Servant.API.Verbs.Delete (c : cs) ())
+ Gogol.Types: instance Gogol.Types.GoogleClient (Servant.API.Verbs.Get (c : cs) ())
+ Gogol.Types: instance Gogol.Types.GoogleClient (Servant.API.Verbs.Patch (c : cs) ())
+ Gogol.Types: instance Gogol.Types.GoogleClient (Servant.API.Verbs.Post cs ())
+ Gogol.Types: instance Gogol.Types.GoogleClient (Servant.API.Verbs.Put (c : cs) ())
+ Gogol.Types: instance Gogol.Types.GoogleClient fn => Gogol.Types.GoogleClient (Gogol.Types.AltMedia Servant.API.Sub.:> fn)
+ Gogol.Types: instance Gogol.Types.ToBody Servant.API.ContentTypes.OctetStream Data.ByteString.Internal.Type.ByteString
+ Gogol.Types: instance Gogol.Types.ToBody Servant.API.ContentTypes.OctetStream Data.ByteString.Lazy.Internal.ByteString
+ Gogol.Types: instance Gogol.Types.ToBody Servant.API.ContentTypes.PlainText Data.ByteString.Internal.Type.ByteString
+ Gogol.Types: instance Gogol.Types.ToBody Servant.API.ContentTypes.PlainText Data.ByteString.Lazy.Internal.ByteString
+ Gogol.Types: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Types.AccessToken
+ Gogol.Types: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Types.ClientId
+ Gogol.Types: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Types.FieldMask
+ Gogol.Types: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Types.GSecret
+ Gogol.Types: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Types.OAuthScope
+ Gogol.Types: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Types.RefreshToken
+ Gogol.Types: instance Web.Internal.HttpApiData.FromHttpApiData Gogol.Types.ServiceId
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.AccessToken
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.AltJSON
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.AltMedia
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.ClientId
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.FieldMask
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.GSecret
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.Multipart
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.OAuthScope
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.RefreshToken
+ Gogol.Types: instance Web.Internal.HttpApiData.ToHttpApiData Gogol.Types.ServiceId
+ Gogol.Types: microseconds :: Seconds -> Int
+ Gogol.Types: mime :: forall {k} (c :: k) a. FromStream c a => Proxy c -> Method -> [Int] -> Request -> ServiceConfig -> GClient a
+ Gogol.Types: newtype AccessToken
+ Gogol.Types: newtype ClientId
+ Gogol.Types: newtype FieldMask
+ Gogol.Types: newtype GSecret
+ Gogol.Types: newtype MediaDownload a
+ Gogol.Types: newtype OAuthScope
+ Gogol.Types: newtype RefreshToken
+ Gogol.Types: newtype Seconds
+ Gogol.Types: newtype ServiceId
+ Gogol.Types: requestClient :: GoogleRequest a => a -> GClient (Rs a)
+ Gogol.Types: seconds :: Seconds -> Int
+ Gogol.Types: serviceHost :: Lens' ServiceConfig ByteString
+ Gogol.Types: servicePath :: Lens' ServiceConfig Builder
+ Gogol.Types: servicePort :: Lens' ServiceConfig Int
+ Gogol.Types: serviceSecure :: Lens' ServiceConfig Bool
+ Gogol.Types: serviceTimeout :: Lens' ServiceConfig (Maybe Seconds)
+ Gogol.Types: setBody :: Request -> [GBody] -> Request
+ Gogol.Types: sinkLBS :: Stream -> ResourceT IO ByteString
+ Gogol.Types: toBody :: ToBody c a => Proxy c -> a -> GBody
+ Gogol.Types: type Fn (fn :: k);
+ Gogol.Types: type Rs a;
+ Gogol.Types: type Scopes a :: [Symbol];
+ Gogol.Types: type Stream = ConduitM () ByteString ResourceT IO ()
+ Gogol.Types: }
Files
- Setup.hs +0/−2
- gogol-core.cabal +67/−83
- src/Gogol/Data/Base64.hs +50/−0
- src/Gogol/Data/JSON.hs +69/−0
- src/Gogol/Data/Time.hs +153/−0
- src/Gogol/Prelude.hs +36/−0
- src/Gogol/Types.hs +680/−0
- src/Network/Google/Data/Bytes.hs +0/−49
- src/Network/Google/Data/JSON.hs +0/−75
- src/Network/Google/Data/Numeric.hs +0/−62
- src/Network/Google/Data/Time.hs +0/−152
- src/Network/Google/Prelude.hs +0/−38
- src/Network/Google/Types.hs +0/−660
- test/Main.hs +7/−6
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
gogol-core.cabal view
@@ -1,93 +1,77 @@-name: gogol-core-version: 0.5.0-synopsis: Core data types and functionality for Gogol libraries.-homepage: https://github.com/brendanhay/gogol-bug-reports: https://github.com/brendanhay/gogol/issues-license: OtherLicense-license-file: LICENSE-author: Brendan Hay-maintainer: Brendan Hay <brendan.g.hay@gmail.com>-copyright: Copyright (c) 2015-2016 Brendan Hay-category: Network, Google, Cloud-build-type: Simple-extra-source-files: README.md-cabal-version: >= 1.10+cabal-version: 2.2+name: gogol-core+version: 1.0.0.0+synopsis: Core data types and functionality for Gogol libraries.+homepage: https://github.com/brendanhay/gogol+bug-reports: https://github.com/brendanhay/gogol/issues+license: MPL-2.0+license-file: LICENSE+author: Brendan Hay+maintainer:+ Brendan Hay <brendan.g.hay+gogol@gmail.com>, Toni Cebrián <toni@tonicebrian.com> +copyright: Copyright (c) 2015-2025 Brendan Hay+category: Google+build-type: Simple+extra-source-files: README.md description:- Core data types, functionality and serialisation primitives for- Gogol related Google Services SDKs.- .- The external interface of this library is stable with respect to the- downstream Gogol libraries, only, and as such is not suitable- for use in non-Gogol projects.+ Core data types, functionality and serialisation primitives for+ Gogol related Google Services SDKs.+ .+ The external interface of this library is stable with respect to the+ downstream Gogol libraries, only, and as such is not suitable+ for use in non-Gogol projects. source-repository head- type: git- location: git://github.com/brendanhay/gogol.git--flag old-locale- description: Use old-locale and time < 1.5- default: False+ type: git+ location: git://github.com/brendanhay/gogol.git library- default-language: Haskell2010- hs-source-dirs: src-- ghc-options: -Wall-- exposed-modules:- Network.Google.Data.Bytes- , Network.Google.Data.JSON- , Network.Google.Data.Numeric- , Network.Google.Data.Time- , Network.Google.Prelude- , Network.Google.Types-- build-depends:- aeson >= 0.8- , attoparsec >= 0.11.3- , base >= 4.7 && < 5- , bifunctors >= 0.1- , bytestring >= 0.9- , case-insensitive >= 1.2- , conduit >= 1.3- , dlist >= 0.7- , exceptions >= 0.6- , hashable >= 1.2- , http-api-data >= 0.2- , http-client >= 0.5 && < 1- , http-media >= 0.6- , http-types >= 0.8.6- , lens >= 4.4- , resourcet >= 1.1- , scientific >= 0.3- , servant >= 0.4.4- , text >= 1.1- , unordered-containers >= 0.2.5+ default-language: GHC2021+ hs-source-dirs: src+ ghc-options:+ -Wall -fwarn-incomplete-uni-patterns+ -fwarn-incomplete-record-updates -funbox-strict-fields+ -fwarn-unused-packages - if !impl(ghc>=7.9)- build-depends:- nats >= 0.1.3+ exposed-modules:+ Gogol.Data.Base64+ Gogol.Data.JSON+ Gogol.Data.Time+ Gogol.Prelude+ Gogol.Types - if flag(old-locale)- build-depends:- old-locale == 1.*- , time >= 1.2 && < 1.5- else- build-depends:- time >= 1.5+ build-depends:+ , aeson >=0.8 && <2.3+ , attoparsec >=0.11.3 && <0.15+ , base >=4.12 && <5+ , base64 >=1.0 && <1.1+ , bytestring >=0.9 && <0.14+ , case-insensitive >=1.2 && <1.3+ , conduit >=1.3 && <1.4+ , dlist >=0.7 && <1.1+ , exceptions >=0.6 && <0.12+ , hashable >=1.2 && <1.6+ , http-api-data >=0.2 && <0.7+ , http-client >=0.5 && <1+ , http-media >=0.6 && <0.9+ , http-types >=0.8.6 && <0.13+ , lens >=4.4 && <5.4+ , resourcet >=1.1 && <1.4+ , scientific >=0.3 && <0.4+ , servant >=0.20.1 && <0.21+ , text >=1.1 && <2.2+ , time >=1.2 && <2+ , unordered-containers >=0.2.5 && <0.3 test-suite tests- type: exitcode-stdio-1.0- default-language: Haskell2010- hs-source-dirs: test- main-is: Main.hs-- ghc-options: -Wall -threaded-- other-modules:-- build-depends:- gogol-core- , base- , tasty+ type: exitcode-stdio-1.0+ default-language: Haskell2010+ hs-source-dirs: test+ main-is: Main.hs+ ghc-options: -Wall -threaded+ other-modules:+ build-depends:+ , base+ , gogol-core+ , tasty
+ src/Gogol/Data/Base64.hs view
@@ -0,0 +1,50 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}++-- |+-- Module : Gogol.Data.Base64+-- Copyright : (c) 2013-2022 Brendan Hay+-- License : Mozilla Public License, v. 2.0.+-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability : provisional+-- Portability : non-portable (GHC extensions)+module Gogol.Data.Base64+ ( Base64 (..),+ _Base64,+ )+where++import Control.Lens (Iso', iso)+import Data.Aeson (FromJSON (..), ToJSON (..))+import Data.Base64.Types qualified as Base64+import Data.ByteString (ByteString)+import Data.ByteString.Base64 qualified as Base64+import Data.Hashable+import Data.Text.Encoding qualified as Text+import GHC.Generics (Generic)+import Gogol.Data.JSON (parseJSONText, toJSONText)+import Web.HttpApiData (FromHttpApiData (..), ToHttpApiData (..))++-- | Raw bytes that will be transparently base64 encoded\/decoded+-- on tramission to\/from a remote API.+newtype Base64 = Base64 {fromBase64 :: ByteString}+ deriving (Eq, Show, Read, Ord, Generic, Hashable)++_Base64 :: Iso' Base64 ByteString+_Base64 = iso fromBase64 Base64++instance ToHttpApiData Base64 where+ toUrlPiece = Base64.extractBase64 . Base64.encodeBase64 . fromBase64+ toQueryParam = Base64.extractBase64 . Base64.encodeBase64 . fromBase64+ toHeader = Base64.extractBase64 . Base64.encodeBase64' . fromBase64++instance FromHttpApiData Base64 where+ parseUrlPiece = fmap Base64 . Base64.decodeBase64Untyped . Text.encodeUtf8+ parseQueryParam = fmap Base64 . Base64.decodeBase64Untyped . Text.encodeUtf8+ parseHeader = fmap Base64 . Base64.decodeBase64Untyped++instance FromJSON Base64 where+ parseJSON = parseJSONText "Base64"++instance ToJSON Base64 where+ toJSON = toJSONText
+ src/Gogol/Data/JSON.hs view
@@ -0,0 +1,69 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE ScopedTypeVariables #-}++-- |+-- Module : Gogol.Data.JSON+-- Copyright : (c) 2015-2022 Brendan Hay <brendan.g.hay@gmail.com>+-- License : Mozilla Public License, v. 2.0.+-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability : provisional+-- Portability : non-portable (GHC extensions)+module Gogol.Data.JSON+ ( Value,+ AsText (..),+ parseJSONObject,+ parseJSONText,+ toJSONText,++ -- * Re-exports+ FromJSON (..),+ FromJSONKey (..),+ ToJSON (..),+ ToJSONKey (..),+ withObject,+ emptyObject,+ object,+ (.=),+ (.:),+ (.:?),+ (.!=),+ )+where++import Data.Aeson+import Data.Aeson.Types+import Data.Text qualified as Text+import Web.HttpApiData (FromHttpApiData (..), ToHttpApiData (..))++#if MIN_VERSION_aeson(2,0,0)+import Data.Aeson.KeyMap (KeyMap)+#else+import Data.HashMap.Strict (HashMap)+import Data.Text (Text)+#endif++newtype AsText a = AsText {fromAsText :: a}+ deriving (Eq, Ord, Read, Show, Num, Fractional, ToHttpApiData, FromHttpApiData)++instance (FromJSON a, FromHttpApiData a) => FromJSON (AsText a) where+ parseJSON (String s) = either (fail . Text.unpack) (pure . AsText) (parseQueryParam s)+ parseJSON o = AsText <$> parseJSON o++instance (ToHttpApiData a) => ToJSON (AsText a) where+ toJSON (AsText x) = String (toQueryParam x)++#if MIN_VERSION_aeson(2,0,0)+parseJSONObject :: FromJSON a => KeyMap Value -> Parser a+#else+parseJSONObject :: FromJSON a => HashMap Text Value -> Parser a+#endif+parseJSONObject = parseJSON . toJSON++parseJSONText :: (FromHttpApiData a) => String -> Value -> Parser a+parseJSONText n = withText n (either (fail . f) pure . parseQueryParam)+ where+ f x = n ++ " - " ++ Text.unpack x++toJSONText :: (ToHttpApiData a) => a -> Value+toJSONText = String . toQueryParam
+ src/Gogol/Data/Time.hs view
@@ -0,0 +1,153 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE OverloadedStrings #-}++-- |+-- Module : Gogol.Data.Time+-- Copyright : (c) 2015-2022 Brendan Hay <brendan.g.hay@gmail.com>+-- License : Mozilla Public License, v. 2.0.+-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability : provisional+-- Portability : non-portable (GHC extensions)+module Gogol.Data.Time+ ( Time (..),+ Date (..),+ DateTime (..),+ Duration (..),+ _Time,+ _Date,+ _DateTime,+ _Duration,+ )+where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types qualified as Aeson+import Data.Attoparsec.Text+import Data.Bifunctor (first, second)+import Data.Bits ((.&.))+import Data.Char (ord)+import Data.Scientific (Scientific)+import Data.Scientific qualified as Sci+import Data.Text (Text)+import Data.Text qualified as Text+import Data.Text.Lazy qualified as LText+import Data.Text.Lazy.Builder qualified as Build+import Data.Text.Lazy.Builder.Scientific qualified as Sci+import Data.Time+import GHC.Generics+import Web.HttpApiData+ ( FromHttpApiData (..),+ ToHttpApiData (..),+ )++-- | This SHOULD be a time in the format of hh:mm:ss. It is+-- recommended that you use the "date-time" format instead of "time"+-- unless you need to transfer only the time part.+newtype Time = Time {fromTime :: TimeOfDay}+ deriving (Eq, Ord, Show, Read, Generic)++_Time :: Iso' Time TimeOfDay+_Time = iso fromTime Time++instance ToHttpApiData Time where+ toQueryParam = Text.pack . show . fromTime++instance FromHttpApiData Time where+ parseQueryParam = second Time . parseText timeParser++-- | This SHOULD be a date in the format of YYYY-MM-DD. It is+-- recommended that you use the "date-time" format instead of "date"+-- unless you need to transfer only the date part.+newtype Date = Date {unDate :: Day}+ deriving (Eq, Ord, Show, Read, Generic, ToHttpApiData, FromHttpApiData)++_Date :: Iso' Date Day+_Date = iso unDate Date++-- | This SHOULD be a date in ISO 8601 format of YYYY-MM-+-- DDThh:mm:ssZ in UTC time. This is the recommended form of date/timestamp.+newtype DateTime = DateTime {unDateTime :: UTCTime}+ deriving (Eq, Ord, Show, Read, Generic, ToHttpApiData, FromHttpApiData)++_DateTime :: Iso' DateTime UTCTime+_DateTime = iso unDateTime DateTime++-- | A duration in seconds with up to nine fractional digits, terminated by 's'.+--+-- /Example/: @"3.5s"@.+newtype Duration = Duration {unDuration :: Scientific}+ deriving (Eq, Ord, Show, Read, Generic)++_Duration :: Iso' Duration Scientific+_Duration = iso unDuration Duration++instance ToHttpApiData Duration where+ toQueryParam =+ LText.toStrict+ . (\seconds -> Build.toLazyText seconds <> "s")+ . Sci.formatScientificBuilder Sci.Fixed (Just 9)+ . unDuration++instance FromHttpApiData Duration where+ parseQueryParam = second Duration . parseText durationParser++instance ToJSON Time where toJSON = String . toQueryParam++instance ToJSON Date where toJSON = String . toQueryParam++instance ToJSON DateTime where toJSON = toJSON . unDateTime++instance ToJSON Duration where toJSON = String . toQueryParam++instance FromJSON Time where+ parseJSON = fmap Time . withText "Time" (run timeParser)++instance FromJSON Date where+ parseJSON = fmap Date . withText "Date" (run dayParser)++instance FromJSON DateTime where+ parseJSON = fmap DateTime . parseJSON++instance FromJSON Duration where+ parseJSON = fmap Duration . withText "Duration" (run durationParser)++parseText :: Parser a -> Text -> Either Text a+parseText p = first Text.pack . parseOnly p++-- | Parse a time of the form @HH:MM:SS@.+timeParser :: Parser TimeOfDay+timeParser = do+ h <- twoDigits <* char ':'+ m <- twoDigits <* char ':'+ s <- twoDigits <&> fromIntegral+ if h < 24 && m < 60 && s < 61+ then pure (TimeOfDay h m s)+ else fail "invalid time"++-- | Parse a date of the form @YYYY-MM-DD@.+dayParser :: Parser Day+dayParser = do+ y <- decimal <* char '-'+ m <- twoDigits <* char '-'+ d <- twoDigits+ maybe (fail "invalid date") pure (fromGregorianValid y m d)++durationParser :: Parser Scientific+durationParser = Sci.fromFloatDigits <$> (double <* char 's')++-- | Parse a two-digit integer (e.g. day of month, hour).+twoDigits :: Parser Int+twoDigits = do+ a <- digit+ b <- digit+ let c2d c = ord c .&. 15+ pure $! c2d a * 10 + c2d b++-- | Run an attoparsec parser as an aeson parser.+run :: Parser a -> Text -> Aeson.Parser a+run p t =+ case parseOnly (p <* endOfInput) t of+ Left err -> fail $ "could not parse date: " ++ err+ Right r -> pure r
+ src/Gogol/Prelude.hs view
@@ -0,0 +1,36 @@+-- |+-- Module : Gogol.Prelude+-- Copyright : (c) 2015-2022 Brendan Hay <brendan.g.hay@gmail.com>+-- License : Mozilla Public License, v. 2.0.+-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability : provisional+-- Portability : non-portable (GHC extensions)+module Gogol.Prelude+ ( module Export,+ )+where++import Control.Lens as Export (Lens', lens, mapping, (#), (^.), _Just)+import Data.ByteString as Export (ByteString)+import Data.Data as Export (Data, Typeable)+import Data.Functor as Export ((<&>))+import Data.HashMap.Strict as Export (HashMap)+import Data.Hashable as Export (Hashable, hashWithSalt)+import Data.Int as Export (Int32, Int64)+import Data.Maybe as Export+import Data.Proxy as Export+import Data.Scientific as Export (Scientific)+import Data.Text as Export (Text)+import Data.Time as Export (Day, TimeOfDay, UTCTime)+import Data.Word as Export (Word32, Word64, Word8)+import GHC.Generics as Export (Generic)+import Gogol.Data.Base64 as Export+import Gogol.Data.JSON as Export+import Gogol.Data.Time as Export+import Gogol.Types as Export+import Network.HTTP.Client as Export (RequestBody)+import Numeric.Natural as Export (Natural)+import Servant.API as Export hiding (FromHttpApiData, Header, Headers, IsMember, Link, ResponseHeader, Stream, ToHttpApiData, Union, getResponse)+import Servant.Links as Export hiding (Link)+import Web.HttpApiData as Export (FromHttpApiData (..), ToHttpApiData (..))+import Prelude as Export
+ src/Gogol/Types.hs view
@@ -0,0 +1,680 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-}++-- |+-- Module : Gogol.Types+-- Copyright : (c) 2015-2022 Brendan Hay <brendan.g.hay@gmail.com>+-- License : Mozilla Public License, v. 2.0.+-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability : provisional+-- Portability : non-portable (GHC extensions)+module Gogol.Types where++import Control.Exception.Lens (exception)+import Control.Lens+import Control.Monad.Catch+import Control.Monad.Trans.Resource+import Data.Aeson+import Data.ByteString (ByteString)+import Data.ByteString.Char8 qualified as BS8+import Data.ByteString.Lazy qualified as LBS+import Data.CaseInsensitive qualified as CI+import Data.Coerce+import Data.Conduit+import Data.Conduit.Combinators qualified as Conduit+import Data.DList (DList)+import Data.DList qualified as DList+import Data.Data+import Data.Foldable qualified as Foldable+import Data.Kind (Type)+import Data.String+import Data.Text (Text)+import Data.Text.Encoding qualified as Text+import Data.Text.Lazy.Builder (Builder)+import Data.Text.Lazy.Builder qualified as Build+import GHC.Generics+import GHC.TypeLits+import Network.HTTP.Client (HttpException, RequestBody (..))+import Network.HTTP.Media hiding (Accept)+import Network.HTTP.Types hiding (Header)+import Network.HTTP.Types qualified as HTTP+import Servant.API hiding (Stream)++data AltJSON = AltJSON+ deriving (Eq, Ord, Show, Read, Generic)++instance ToHttpApiData AltJSON where+ toQueryParam = const "json"++data AltMedia = AltMedia+ deriving (Eq, Ord, Show, Read, Generic)++instance ToHttpApiData AltMedia where+ toQueryParam = const "media"++data Multipart = Multipart+ deriving (Eq, Ord, Show, Read, Generic)++instance ToHttpApiData Multipart where+ toQueryParam = const "multipart"++-- | An OAuth2 scope.+newtype OAuthScope = OAuthScope Text+ deriving+ ( Eq,+ Ord,+ Show,+ Read,+ IsString,+ Generic,+ FromHttpApiData,+ ToHttpApiData,+ FromJSON,+ ToJSON+ )++-- | An OAuth2 access token.+newtype AccessToken = AccessToken Text+ deriving+ ( Eq,+ Ord,+ Show,+ Read,+ IsString,+ Generic,+ FromHttpApiData,+ ToHttpApiData,+ FromJSON,+ ToJSON+ )++-- | An OAuth2 refresh token.+newtype RefreshToken = RefreshToken Text+ deriving+ ( Eq,+ Ord,+ Show,+ Read,+ IsString,+ Generic,+ FromHttpApiData,+ ToHttpApiData,+ FromJSON,+ ToJSON+ )++-- | A client identifier.+newtype ClientId = ClientId Text+ deriving+ ( Eq,+ Ord,+ Show,+ Read,+ IsString,+ Generic,+ FromHttpApiData,+ ToHttpApiData,+ FromJSON,+ ToJSON+ )++-- | A service identifier.+newtype ServiceId = ServiceId Text+ deriving+ ( Eq,+ Ord,+ Show,+ Read,+ IsString,+ Generic,+ FromHttpApiData,+ ToHttpApiData,+ FromJSON,+ ToJSON+ )++-- | An opaque client secret.+newtype GSecret = GSecret Text+ deriving+ ( Eq,+ Ord,+ Read,+ IsString,+ Generic,+ FromHttpApiData,+ ToHttpApiData,+ FromJSON,+ ToJSON+ )++instance Show GSecret where+ show = const "*****"++newtype MediaDownload a = MediaDownload a++data MediaUpload a = MediaUpload a GBody++_Coerce :: (Coercible a b, Coercible b a) => Iso' a b+_Coerce = iso coerce coerce++-- | Invalid Iso, exists for ease of composition with the current 'Lens . Iso'+-- chaining to hide internal types from the user.+_Default :: (Monoid a) => Iso' (Maybe a) a+_Default = iso f Just+ where+ f (Just x) = x+ f Nothing = mempty++type Stream = ConduitM () ByteString (ResourceT IO) ()++data Error+ = TransportError HttpException+ | SerializeError SerializeError+ | ServiceError ServiceError+ deriving (Show)++instance Exception Error++data SerializeError = SerializeError'+ { _serializeId :: !ServiceId,+ _serializeHeaders :: [HTTP.Header],+ _serializeStatus :: !Status,+ _serializeMessage :: !String,+ _serializeBody :: !(Maybe LBS.ByteString)+ }+ deriving (Eq, Show)++data ServiceError = ServiceError'+ { _serviceId :: !ServiceId,+ _serviceStatus :: !Status,+ _serviceHeaders :: ![HTTP.Header],+ _serviceBody :: !(Maybe LBS.ByteString)+ }+ deriving (Eq, Show)++class AsError a where+ -- | A general Amazonka error.+ _Error :: Prism' a Error++ {-# MINIMAL _Error #-}++ -- | An error occured while communicating over HTTP with a remote service.+ _TransportError :: Prism' a HttpException++ -- | A serialisation error occured when attempting to deserialise a response.+ _SerializeError :: Prism' a SerializeError++ -- | A service specific error returned by the remote service.+ _ServiceError :: Prism' a ServiceError++ _TransportError = _Error . _TransportError+ _SerializeError = _Error . _SerializeError+ _ServiceError = _Error . _ServiceError++instance AsError SomeException where+ _Error = exception++instance AsError Error where+ _Error = id++ _TransportError = prism TransportError $ \case+ TransportError e -> Right e+ x -> Left x++ _SerializeError = prism SerializeError $ \case+ SerializeError e -> Right e+ x -> Left x++ _ServiceError = prism ServiceError $ \case+ ServiceError e -> Right e+ x -> Left x++data ServiceConfig = ServiceConfig+ { _svcId :: !ServiceId,+ _svcHost :: !ByteString,+ _svcPath :: !Builder,+ _svcPort :: !Int,+ _svcSecure :: !Bool,+ _svcTimeout :: !(Maybe Seconds)+ }++defaultService :: ServiceId -> ByteString -> ServiceConfig+defaultService i h =+ ServiceConfig+ { _svcId = i,+ _svcHost = h,+ _svcPath = mempty,+ _svcPort = 443,+ _svcSecure = True,+ _svcTimeout = Just 70+ }++-- | The remote host name, used for both the IP address to connect to and the+-- host request header.+serviceHost :: Lens' ServiceConfig ByteString+serviceHost = lens _svcHost (\s a -> s {_svcHost = a})++-- | The remote port to connect to.+--+-- Defaults to @443@.+servicePort :: Lens' ServiceConfig Int+servicePort = lens _svcPort (\s a -> s {_svcPort = a})++-- | A path prefix that is prepended to any sent HTTP request.+--+-- Defaults to @mempty@.+servicePath :: Lens' ServiceConfig Builder+servicePath = lens _svcPath (\s a -> s {_svcPath = a})++-- | Whether to use HTTPS/SSL.+--+-- Defaults to @True@.+serviceSecure :: Lens' ServiceConfig Bool+serviceSecure = lens _svcSecure (\s a -> s {_svcSecure = a})++-- | Number of seconds to wait for a response.+serviceTimeout :: Lens' ServiceConfig (Maybe Seconds)+serviceTimeout = lens _svcTimeout (\s a -> s {_svcTimeout = a})++-- | A single part of a (potentially multipart) request body.+--+-- /Note:/ The 'IsString' instance defaults to a @text/plain@ MIME type.+data GBody = GBody !MediaType !RequestBody++instance IsString GBody where+ fromString = GBody ("text" // "plain") . fromString++-- | A lens into the 'MediaType' of a request 'Body'.+bodyContentType :: Lens' GBody MediaType+bodyContentType = lens (\(GBody m _) -> m) (\(GBody _ b) m -> GBody m b)++-- | An intermediary request builder.+data Request = Request+ { _rqPath :: !Builder,+ _rqQuery :: !(DList (ByteString, Maybe ByteString)),+ _rqHeaders :: !(DList (HeaderName, ByteString)),+ _rqBody :: ![GBody]+ }++instance Monoid Request where+ mempty = Request mempty mempty mempty mempty+ mappend = (<>)++instance Semigroup Request where+ a <> b =+ Request+ (_rqPath a <> "/" <> _rqPath b)+ (_rqQuery a <> _rqQuery b)+ (_rqHeaders a <> _rqHeaders b)+ (_rqBody b <> _rqBody a)++appendPath :: Request -> Builder -> Request+appendPath rq x = rq {_rqPath = _rqPath rq <> "/" <> x}++appendPaths :: (ToHttpApiData a) => Request -> [a] -> Request+appendPaths rq = appendPath rq . foldMap (mappend "/" . buildText)++appendQuery :: Request -> ByteString -> Maybe Text -> Request+appendQuery rq k v =+ rq+ { _rqQuery = DList.snoc (_rqQuery rq) (k, Text.encodeUtf8 <$> v)+ }++appendHeader :: Request -> HeaderName -> Maybe Text -> Request+appendHeader rq _ Nothing = rq+appendHeader rq k (Just v) =+ rq+ { _rqHeaders = DList.snoc (_rqHeaders rq) (k, Text.encodeUtf8 v)+ }++setBody :: Request -> [GBody] -> Request+setBody rq bs = rq {_rqBody = bs}++-- | A materialised 'http-client' request and associated response parser.+data GClient a = GClient+ { _cliAccept :: !(Maybe MediaType),+ _cliMethod :: !Method,+ _cliCheck :: !(Status -> Bool),+ _cliService :: !ServiceConfig,+ _cliRequest :: !Request,+ _cliResponse :: !(Stream -> ResourceT IO (Either (String, LBS.ByteString) a))+ }++clientService :: Lens' (GClient a) ServiceConfig+clientService = lens _cliService (\s a -> s {_cliService = a})++mime ::+ (FromStream c a) =>+ Proxy c ->+ Method ->+ [Int] ->+ Request ->+ ServiceConfig ->+ GClient a+mime p = gClient (fromStream p) (Just (contentType p))++discard ::+ Method ->+ [Int] ->+ Request ->+ ServiceConfig ->+ GClient ()+discard = gClient (\b -> runConduit (b .| Conduit.sinkNull) >> pure (Right ())) Nothing++gClient ::+ (Stream -> ResourceT IO (Either (String, LBS.ByteString) a)) ->+ Maybe MediaType ->+ Method ->+ [Int] ->+ Request ->+ ServiceConfig ->+ GClient a+gClient f cs m statuses rq s =+ GClient+ { _cliAccept = cs,+ _cliMethod = m,+ _cliCheck = \status -> fromEnum status `elem` statuses,+ _cliService = s,+ _cliRequest = rq,+ _cliResponse = f+ }++class (Accept c) => ToBody c a where+ toBody :: Proxy c -> a -> GBody++instance ToBody OctetStream ByteString where+ toBody p = GBody (contentType p) . RequestBodyBS++instance ToBody OctetStream LBS.ByteString where+ toBody p = GBody (contentType p) . RequestBodyLBS++instance ToBody PlainText ByteString where+ toBody p = GBody (contentType p) . RequestBodyBS++instance ToBody PlainText LBS.ByteString where+ toBody p = GBody (contentType p) . RequestBodyLBS++instance (ToJSON a) => ToBody JSON a where+ toBody p = GBody (contentType p) . RequestBodyLBS . encode++class (Accept c) => FromStream c a where+ fromStream ::+ Proxy c ->+ Stream ->+ ResourceT IO (Either (String, LBS.ByteString) a)++instance FromStream OctetStream Stream where+ fromStream Proxy = pure . Right++instance (FromJSON a) => FromStream JSON a where+ fromStream Proxy s = do+ bs <- sinkLBS s+ case eitherDecode bs of+ Left e -> pure $! Left (e, bs)+ Right x -> pure $! Right x++class GoogleRequest a where+ type Rs a :: Type+ type Scopes a :: [Symbol]++ requestClient :: a -> GClient (Rs a)++class GoogleClient fn where+ type Fn fn :: Type++ buildClient :: Proxy fn -> Request -> Fn fn++-- | Multiple path captures, with @[xs]@ forming @/<x1>/<x2>/<x2>/...@.+data Captures (s :: Symbol) a++-- | Form a Google style sub-resource, such as @/<capture>:<mode>@.+data CaptureMode (s :: Symbol) (m :: Symbol) a++data MultipartRelated (cs :: [Type]) m++instance+ ( ToBody c m,+ GoogleClient fn+ ) =>+ GoogleClient (MultipartRelated (c ': cs) m :> fn)+ where+ type Fn (MultipartRelated (c ': cs) m :> fn) = m -> GBody -> Fn fn++ buildClient Proxy rq m b =+ buildClient (Proxy :: Proxy fn) $+ setBody rq [toBody (Proxy :: Proxy c) m, b]++instance (GoogleClient fn) => GoogleClient (AltMedia :> fn) where+ type Fn (AltMedia :> fn) = GBody -> Fn fn++ buildClient Proxy rq b =+ buildClient (Proxy :: Proxy fn) $+ setBody rq [b]++instance (KnownSymbol s, GoogleClient fn) => GoogleClient (s :> fn) where+ type Fn (s :> fn) = Fn fn++ buildClient Proxy rq =+ buildClient (Proxy :: Proxy fn) $+ appendPath rq (buildSymbol (Proxy :: Proxy s))++instance (GoogleClient a, GoogleClient b) => GoogleClient (a :<|> b) where+ type Fn (a :<|> b) = Fn a :<|> Fn b++ buildClient Proxy rq =+ buildClient (Proxy :: Proxy a) rq+ :<|> buildClient (Proxy :: Proxy b) rq++instance+ ( KnownSymbol s,+ ToHttpApiData a,+ GoogleClient fn+ ) =>+ GoogleClient (Capture s a :> fn)+ where+ type Fn (Capture s a :> fn) = a -> Fn fn++ buildClient Proxy rq =+ buildClient (Proxy :: Proxy fn)+ . appendPath rq+ . buildText++instance+ ( KnownSymbol s,+ ToHttpApiData a,+ GoogleClient fn+ ) =>+ GoogleClient (Captures s a :> fn)+ where+ type Fn (Captures s a :> fn) = [a] -> Fn fn++ buildClient Proxy rq =+ buildClient (Proxy :: Proxy fn)+ . appendPaths rq++instance+ ( KnownSymbol s,+ KnownSymbol m,+ ToHttpApiData a,+ GoogleClient fn+ ) =>+ GoogleClient (CaptureMode s m a :> fn)+ where+ type Fn (CaptureMode s m a :> fn) = a -> Fn fn++ buildClient Proxy rq x =+ buildClient (Proxy :: Proxy fn)+ . appendPath rq+ $ buildText x <> ":" <> buildSymbol (Proxy :: Proxy m)++instance+ ( KnownSymbol s,+ ToHttpApiData a,+ GoogleClient fn+ ) =>+ GoogleClient (QueryParam s a :> fn)+ where+ type Fn (QueryParam s a :> fn) = Maybe a -> Fn fn++ buildClient Proxy rq mx = buildClient (Proxy :: Proxy fn) $+ case mx of+ Nothing -> rq+ Just x -> appendQuery rq k v+ where+ k = byteSymbol (Proxy :: Proxy s)+ v = Just (toQueryParam x)++instance+ ( KnownSymbol s,+ ToHttpApiData a,+ GoogleClient fn+ ) =>+ GoogleClient (QueryParams s a :> fn)+ where+ type Fn (QueryParams s a :> fn) = [a] -> Fn fn++ buildClient Proxy rq = buildClient (Proxy :: Proxy fn) . Foldable.foldl' go rq+ where+ go r = appendQuery r k . Just . toQueryParam++ k = byteSymbol (Proxy :: Proxy s)++instance+ ( KnownSymbol s,+ ToHttpApiData a,+ GoogleClient fn+ ) =>+ GoogleClient (Header s a :> fn)+ where+ type Fn (Header s a :> fn) = Maybe a -> Fn fn++ buildClient Proxy rq mx = buildClient (Proxy :: Proxy fn) $+ case mx of+ Nothing -> rq+ Just x -> appendHeader rq (CI.mk k) v+ where+ k = byteSymbol (Proxy :: Proxy s)+ v = Just (toQueryParam x)++instance+ ( ToBody c a,+ GoogleClient fn+ ) =>+ GoogleClient (ReqBody (c ': cs) a :> fn)+ where+ type Fn (ReqBody (c ': cs) a :> fn) = a -> Fn fn++ buildClient Proxy rq x =+ buildClient (Proxy :: Proxy fn) $+ setBody rq [toBody (Proxy :: Proxy c) x]++instance {-# OVERLAPPABLE #-} (FromStream c a) => GoogleClient (Get (c ': cs) a) where+ type Fn (Get (c ': cs) a) = ServiceConfig -> GClient a++ buildClient Proxy = mime (Proxy :: Proxy c) methodGet [200, 203]++instance {-# OVERLAPPING #-} GoogleClient (Get (c ': cs) ()) where+ type Fn (Get (c ': cs) ()) = ServiceConfig -> GClient ()++ buildClient Proxy = discard methodGet [204]++instance {-# OVERLAPPABLE #-} (FromStream c a, cs' ~ (c ': cs)) => GoogleClient (Post cs' a) where+ type Fn (Post cs' a) = ServiceConfig -> GClient a++ buildClient Proxy = mime (Proxy :: Proxy c) methodPost [200, 201]++instance {-# OVERLAPPING #-} GoogleClient (Post cs ()) where+ type Fn (Post cs ()) = ServiceConfig -> GClient ()++ buildClient Proxy = discard methodPost [204]++instance {-# OVERLAPPABLE #-} (FromStream c a) => GoogleClient (Put (c ': cs) a) where+ type Fn (Put (c ': cs) a) = ServiceConfig -> GClient a++ buildClient Proxy = mime (Proxy :: Proxy c) methodPut [200, 201]++instance {-# OVERLAPPING #-} GoogleClient (Put (c ': cs) ()) where+ type Fn (Put (c ': cs) ()) = ServiceConfig -> GClient ()++ buildClient Proxy = discard methodPut [204]++instance {-# OVERLAPPABLE #-} (FromStream c a) => GoogleClient (Patch (c ': cs) a) where+ type Fn (Patch (c ': cs) a) = ServiceConfig -> GClient a++ buildClient Proxy = mime (Proxy :: Proxy c) methodPatch [200, 201]++instance {-# OVERLAPPING #-} GoogleClient (Patch (c ': cs) ()) where+ type Fn (Patch (c ': cs) ()) = ServiceConfig -> GClient ()++ buildClient Proxy = discard methodPatch [204]++instance {-# OVERLAPPABLE #-} (FromStream c a) => GoogleClient (Delete (c ': cs) a) where+ type Fn (Delete (c ': cs) a) = ServiceConfig -> GClient a++ buildClient Proxy = mime (Proxy :: Proxy c) methodDelete [200, 202]++instance {-# OVERLAPPING #-} GoogleClient (Delete (c ': cs) ()) where+ type Fn (Delete (c ': cs) ()) = ServiceConfig -> GClient ()++ buildClient Proxy = discard methodDelete [204]++sinkLBS :: Stream -> ResourceT IO LBS.ByteString+sinkLBS = runConduit . (.| Conduit.sinkLazy)++buildText :: (ToHttpApiData a) => a -> Builder+buildText = Build.fromText . toQueryParam++buildSymbol :: forall n proxy. (KnownSymbol n) => proxy n -> Builder+buildSymbol = Build.fromString . symbolVal++byteSymbol :: forall n proxy. (KnownSymbol n) => proxy n -> ByteString+byteSymbol = BS8.pack . symbolVal++-- | An integral value representing seconds.+newtype Seconds = Seconds Int+ deriving+ ( Eq,+ Ord,+ Read,+ Show,+ Enum,+ Num,+ Bounded,+ Integral,+ Real,+ Generic+ )++seconds :: Seconds -> Int+seconds (Seconds n)+ | n < 0 = 0+ | otherwise = n++microseconds :: Seconds -> Int+microseconds = (1000000 *) . seconds++newtype FieldMask = FieldMask {fromFieldMask :: Text}+ deriving+ ( Eq,+ Ord,+ Show,+ Read,+ IsString,+ Generic,+ FromHttpApiData,+ ToHttpApiData,+ FromJSON,+ ToJSON+ )
− src/Network/Google/Data/Bytes.hs
@@ -1,49 +0,0 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}---- |--- Module : Network.Google.Data.Bytes--- Copyright : (c) 2013-2016 Brendan Hay--- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : provisional--- Portability : non-portable (GHC extensions)----module Network.Google.Data.Bytes- ( Bytes (..)- , _Bytes- ) where--import Control.Lens (Iso', iso)-import Data.Aeson (FromJSON (..), ToJSON (..))-import Data.ByteString (ByteString)-import Data.Data (Data, Typeable)-import Data.Hashable-import qualified Data.Text.Encoding as Text-import GHC.Generics (Generic)-import Network.Google.Data.JSON (parseJSONText, toJSONText)-import Web.HttpApiData (FromHttpApiData (..),- ToHttpApiData (..))--- | Binary data.------ This data is passed to/from the serialisation routines as-is, and any--- particular encoding or decoding (say, base64) is left up to the caller.-newtype Bytes = Bytes { unBytes :: ByteString }- deriving (Eq, Show, Read, Ord, Data, Typeable, Generic)--instance Hashable Bytes--_Bytes :: Iso' Bytes ByteString-_Bytes = iso unBytes Bytes--instance ToHttpApiData Bytes where- toQueryParam = Text.decodeUtf8 . unBytes- toHeader = unBytes--instance FromHttpApiData Bytes where- parseQueryParam = pure . Bytes . Text.encodeUtf8- parseHeader = pure . Bytes--instance FromJSON Bytes where parseJSON = parseJSONText "Bytes"-instance ToJSON Bytes where toJSON = toJSONText
− src/Network/Google/Data/JSON.hs
@@ -1,75 +0,0 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE ScopedTypeVariables #-}---- |--- Module : Network.Google.Data.JSON--- Copyright : (c) 2015-2016 Brendan Hay <brendan.g.hay@gmail.com>--- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : provisional--- Portability : non-portable (GHC extensions)----module Network.Google.Data.JSON- ( JSONValue- , Textual (..)- , parseJSONObject- , parseJSONText- , toJSONText-- -- * Re-exports- , FromJSON (..)- , ToJSON (..)-- , withObject- , emptyObject- , object-- , (.=)- , (.:)- , (.:?)- , (.!=)- ) where--import Data.Aeson-import Data.Aeson.Types-import Data.Data-import Data.HashMap.Strict (HashMap)-import Data.Text (Text)-import qualified Data.Text as Text-import Web.HttpApiData (FromHttpApiData (..), ToHttpApiData (..))--type JSONValue = Value--newtype Textual a = Textual a- deriving- ( Eq- , Ord- , Read- , Show- , Num- , Fractional- , Data- , Typeable- , ToHttpApiData- , FromHttpApiData- )--instance (FromJSON a, FromHttpApiData a) => FromJSON (Textual a) where- parseJSON (String s) =- either (fail . Text.unpack) (pure . Textual) (parseQueryParam s)- parseJSON o = Textual <$> parseJSON o--instance ToHttpApiData a => ToJSON (Textual a) where- toJSON (Textual x) = String (toQueryParam x)--parseJSONObject :: FromJSON a => HashMap Text Value -> Parser a-parseJSONObject = parseJSON . Object--parseJSONText :: FromHttpApiData a => String -> Value -> Parser a-parseJSONText n = withText n (either (fail . f) pure . parseQueryParam)- where- f x = n ++ " - " ++ Text.unpack x--toJSONText :: ToHttpApiData a => a -> Value-toJSONText = String . toQueryParam
− src/Network/Google/Data/Numeric.hs
@@ -1,62 +0,0 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE ScopedTypeVariables #-}---- |--- Module : Network.Google.Data.Numeric--- Copyright : (c) 2015-2016 Brendan Hay <brendan.g.hay@gmail.com>--- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : provisional--- Portability : non-portable (GHC extensions)----module Network.Google.Data.Numeric- ( Nat (..)- ) where--import Control.Monad-import Data.Aeson-import Data.Data-import Data.Monoid ((<>))-import Data.Scientific-import Data.Text (Text)-import qualified Data.Text as Text-import qualified Data.Text.Lazy as LText-import Data.Text.Lazy.Builder (Builder)-import qualified Data.Text.Lazy.Builder as Build-import qualified Data.Text.Lazy.Builder.Int as Build-import qualified Data.Text.Read as Read-import Numeric.Natural-import Servant.API--newtype Nat = Nat { unNat :: Natural }- deriving (Eq, Ord, Enum, Show, Read, Num, Real, Integral, Data, Typeable)--instance FromJSON Nat where- parseJSON = parseJSON >=> go- where- go n = case floatingOrInteger n of- Left (_ :: Double) -> fail (floatErr n)- Right i- | n < 0 -> fail (negateErr n)- | otherwise -> return . Nat $ fromInteger i-- floatErr = mappend "Cannot convert float to Natural: " . show- negateErr = mappend "Cannot convert negative number to Natural: " . show--instance ToJSON Nat where- toJSON = Number . flip scientific 0 . toInteger . unNat--instance ToHttpApiData Nat where- toQueryParam = shortText . Build.decimal--instance FromHttpApiData Nat where- parseQueryParam t =- case Read.decimal t of- Right (x, r) | Text.null r- -> Right x- _ -> Left ("Unable to parse natural from: " <> t)--shortText :: Builder -> Text-shortText = LText.toStrict . Build.toLazyTextWith 32
− src/Network/Google/Data/Time.hs
@@ -1,152 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}---- |--- Module : Network.Google.Data.Time--- Copyright : (c) 2015-2016 Brendan Hay <brendan.g.hay@gmail.com>--- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : provisional--- Portability : non-portable (GHC extensions)----module Network.Google.Data.Time- ( Time'- , Date'- , DateTime' (..)- , GDuration-- , _Time- , _Date- , _DateTime- , _GDuration- ) where--import Data.Monoid ((<>))-import Control.Lens-import Data.Aeson-import qualified Data.Aeson.Types as Aeson-import Data.Attoparsec.Text-import Data.Bifunctor (first, second)-import Data.Bits ((.&.))-import Data.Char (ord)-import Data.Data (Data, Typeable)-import Data.Scientific (Scientific)-import qualified Data.Scientific as Sci-import Data.Text (Text)-import qualified Data.Text as Text-import qualified Data.Text.Lazy as LText-import qualified Data.Text.Lazy.Builder as Build-import qualified Data.Text.Lazy.Builder.Scientific as Sci-import Data.Time-import GHC.Generics-import Web.HttpApiData (FromHttpApiData (..),- ToHttpApiData (..))---- | This SHOULD be a time in the format of hh:mm:ss. It is--- recommended that you use the "date-time" format instead of "time"--- unless you need to transfer only the time part.-newtype Time' = Time' { unTime :: TimeOfDay }- deriving (Eq, Ord, Show, Read, Generic, Data, Typeable)--_Time :: Iso' Time' TimeOfDay-_Time = iso unTime Time'--instance ToHttpApiData Time' where- toQueryParam = Text.pack . show . unTime--instance FromHttpApiData Time' where- parseQueryParam = second Time' . parseText timeParser---- | This SHOULD be a date in the format of YYYY-MM-DD. It is--- recommended that you use the "date-time" format instead of "date"--- unless you need to transfer only the date part.-newtype Date' = Date' { unDate :: Day }- deriving (Eq, Ord, Show, Read, Generic, Data, Typeable, ToHttpApiData, FromHttpApiData)--_Date :: Iso' Date' Day-_Date = iso unDate Date'---- | This SHOULD be a date in ISO 8601 format of YYYY-MM---- DDThh:mm:ssZ in UTC time. This is the recommended form of date/timestamp.-newtype DateTime' = DateTime' { unDateTime :: UTCTime }- deriving (Eq, Ord, Show, Read, Generic, Data, Typeable, ToHttpApiData, FromHttpApiData)--_DateTime :: Iso' DateTime' UTCTime-_DateTime = iso unDateTime DateTime'---- | A duration in seconds with up to nine fractional digits, terminated by 's'.------ /Example/: @"3.5s"@.-newtype GDuration = GDuration { unGDuration :: Scientific }- deriving (Eq, Ord, Show, Read, Generic, Data, Typeable)--_GDuration :: Iso' GDuration Scientific-_GDuration = iso unGDuration GDuration--instance ToHttpApiData GDuration where- toQueryParam =- LText.toStrict- . (\seconds -> Build.toLazyText seconds <> "s")- . Sci.formatScientificBuilder Sci.Fixed (Just 9)- . unGDuration--instance FromHttpApiData GDuration where- parseQueryParam = second GDuration . parseText durationParser--instance ToJSON Time' where toJSON = String . toQueryParam-instance ToJSON Date' where toJSON = String . toQueryParam-instance ToJSON DateTime' where toJSON = toJSON . unDateTime-instance ToJSON GDuration where toJSON = String . toQueryParam--instance FromJSON Time' where- parseJSON = fmap Time' . withText "time" (run timeParser)--instance FromJSON Date' where- parseJSON = fmap Date' . withText "date" (run dayParser)--instance FromJSON DateTime' where- parseJSON = fmap DateTime' . parseJSON--instance FromJSON GDuration where- parseJSON = fmap GDuration . withText "duration" (run durationParser)--parseText :: Parser a -> Text -> Either Text a-parseText p = first Text.pack . parseOnly p---- | Parse a time of the form @HH:MM:SS@.-timeParser :: Parser TimeOfDay-timeParser = do- h <- twoDigits <* char ':'- m <- twoDigits <* char ':'- s <- twoDigits <&> fromIntegral- if h < 24 && m < 60 && s < 61- then pure (TimeOfDay h m s)- else fail "invalid time"---- | Parse a date of the form @YYYY-MM-DD@.-dayParser :: Parser Day-dayParser = do- y <- decimal <* char '-'- m <- twoDigits <* char '-'- d <- twoDigits- maybe (fail "invalid date") pure (fromGregorianValid y m d)--durationParser :: Parser Scientific-durationParser = Sci.fromFloatDigits <$> (double <* char 's')---- | Parse a two-digit integer (e.g. day of month, hour).-twoDigits :: Parser Int-twoDigits = do- a <- digit- b <- digit- let c2d c = ord c .&. 15- pure $! c2d a * 10 + c2d b---- | Run an attoparsec parser as an aeson parser.-run :: Parser a -> Text -> Aeson.Parser a-run p t =- case parseOnly (p <* endOfInput) t of- Left err -> fail $ "could not parse date: " ++ err- Right r -> pure r
− src/Network/Google/Prelude.hs
@@ -1,38 +0,0 @@--- |--- Module : Network.Google.Prelude--- Copyright : (c) 2015-2016 Brendan Hay <brendan.g.hay@gmail.com>--- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : provisional--- Portability : non-portable (GHC extensions)----module Network.Google.Prelude- ( module Export- ) where--import Control.Lens as Export (Lens', lens, mapping, ( # ), (^.), _Just)-import Data.ByteString as Export (ByteString)-import Data.Data as Export (Data, Typeable)-import Data.Hashable as Export (Hashable, hashWithSalt)-import Data.HashMap.Strict as Export (HashMap)-import Data.Int as Export (Int32, Int64)-import Data.Maybe as Export-import Data.Monoid as Export (mempty, (<>))-import Data.Proxy as Export-import Data.Scientific as Export (Scientific)-import Data.Text as Export (Text)-import Data.Time as Export (Day, TimeOfDay, UTCTime)-import Data.Word as Export (Word32, Word64, Word8)-import GHC.Generics as Export (Generic)-import Network.HTTP.Client as Export (RequestBody)-import Numeric.Natural as Export (Natural)-import Prelude as Export hiding (product, span, any, Word)-import Servant.API as Export hiding (Headers, Link, getResponse, Stream, ResponseHeader, Header, header)-import Servant.Utils.Links as Export hiding (Link)-import Web.HttpApiData as Export (FromHttpApiData (..), ToHttpApiData (..))--import Network.Google.Data.Bytes as Export-import Network.Google.Data.JSON as Export-import Network.Google.Data.Numeric as Export-import Network.Google.Data.Time as Export-import Network.Google.Types as Export
− src/Network/Google/Types.hs
@@ -1,660 +0,0 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TupleSections #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE UndecidableInstances #-}---- |--- Module : Network.Google.Types--- Copyright : (c) 2015-2016 Brendan Hay <brendan.g.hay@gmail.com>--- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : provisional--- Portability : non-portable (GHC extensions)----module Network.Google.Types where--import Control.Exception.Lens (exception)-import Control.Lens-import Control.Monad.Catch-import Control.Monad.Trans.Resource--import Data.Aeson-import Data.ByteString (ByteString)-import Data.Coerce-import Data.Conduit-import Data.Data-import Data.DList (DList)-import Data.Foldable (foldMap, foldl')-import Data.String-import Data.Semigroup-import Data.Text (Text)-import Data.Text.Lazy.Builder (Builder)--import GHC.Generics-import GHC.TypeLits--import Network.HTTP.Client (HttpException, RequestBody (..))-import Network.HTTP.Media hiding (Accept)-import Network.HTTP.Types hiding (Header)--import Servant.API hiding (Stream)--import qualified Data.ByteString.Char8 as BS8-import qualified Data.ByteString.Lazy as LBS-import qualified Data.CaseInsensitive as CI-import qualified Data.Conduit.Combinators as Conduit-import qualified Data.DList as DList-import qualified Data.Text.Encoding as Text-import qualified Data.Text.Lazy.Builder as Build-import qualified Network.HTTP.Types as HTTP--data AltJSON = AltJSON deriving (Eq, Ord, Show, Read, Generic, Typeable)-data AltMedia = AltMedia deriving (Eq, Ord, Show, Read, Generic, Typeable)-data Multipart = Multipart deriving (Eq, Ord, Show, Read, Generic, Typeable)--instance ToHttpApiData AltJSON where toQueryParam = const "json"-instance ToHttpApiData AltMedia where toQueryParam = const "media"-instance ToHttpApiData Multipart where toQueryParam = const "multipart"---- | An OAuth2 scope.-newtype OAuthScope = OAuthScope Text- deriving- ( Eq- , Ord- , Show- , Read- , IsString- , Generic- , Typeable- , FromHttpApiData- , ToHttpApiData- , FromJSON- , ToJSON- )---- | An OAuth2 access token.-newtype AccessToken = AccessToken Text- deriving- ( Eq- , Ord- , Show- , Read- , IsString- , Generic- , Typeable- , FromHttpApiData- , ToHttpApiData- , FromJSON- , ToJSON- )---- | An OAuth2 refresh token.-newtype RefreshToken = RefreshToken Text- deriving- ( Eq- , Ord- , Show- , Read- , IsString- , Generic- , Typeable- , FromHttpApiData- , ToHttpApiData- , FromJSON- , ToJSON- )---- | A client identifier.-newtype ClientId = ClientId Text- deriving- ( Eq- , Ord- , Show- , Read- , IsString- , Generic- , Typeable- , FromHttpApiData- , ToHttpApiData- , FromJSON- , ToJSON- )---- | A service identifier.-newtype ServiceId = ServiceId Text- deriving- ( Eq- , Ord- , Show- , Read- , IsString- , Generic- , Typeable- , FromHttpApiData- , ToHttpApiData- , FromJSON- , ToJSON- )---- | An opaque client secret.-newtype GSecret = GSecret Text- deriving- ( Eq- , Ord- , Read- , IsString- , Generic- , Typeable- , FromHttpApiData- , ToHttpApiData- , FromJSON- , ToJSON- )--instance Show GSecret where- show = const "*****"--newtype MediaDownload a = MediaDownload a--data MediaUpload a = MediaUpload a GBody--_Coerce :: (Coercible a b, Coercible b a) => Iso' a b-_Coerce = iso coerce coerce---- | Invalid Iso, exists for ease of composition with the current 'Lens . Iso'--- chaining to hide internal types from the user.-_Default :: Monoid a => Iso' (Maybe a) a-_Default = iso f Just- where- f (Just x) = x- f Nothing = mempty--type Stream = ConduitM () ByteString (ResourceT IO) ()--data Error- = TransportError HttpException- | SerializeError SerializeError- | ServiceError ServiceError- deriving (Show, Typeable)--instance Exception Error--data SerializeError = SerializeError'- { _serializeId :: !ServiceId- , _serializeHeaders :: [HTTP.Header]- , _serializeStatus :: !Status- , _serializeMessage :: !String- , _serializeBody :: !(Maybe LBS.ByteString)- } deriving (Eq, Show, Typeable)--data ServiceError = ServiceError'- { _serviceId :: !ServiceId- , _serviceStatus :: !Status- , _serviceHeaders :: ![HTTP.Header]- , _serviceBody :: !(Maybe LBS.ByteString)- } deriving (Eq, Show, Typeable)--class AsError a where- -- | A general Amazonka error.- _Error :: Prism' a Error- {-# MINIMAL _Error #-}-- -- | An error occured while communicating over HTTP with a remote service.- _TransportError :: Prism' a HttpException-- -- | A serialisation error occured when attempting to deserialise a response.- _SerializeError :: Prism' a SerializeError-- -- | A service specific error returned by the remote service.- _ServiceError :: Prism' a ServiceError-- _TransportError = _Error . _TransportError- _SerializeError = _Error . _SerializeError- _ServiceError = _Error . _ServiceError--instance AsError SomeException where- _Error = exception--instance AsError Error where- _Error = id-- _TransportError = prism TransportError $ \case- TransportError e -> Right e- x -> Left x-- _SerializeError = prism SerializeError $ \case- SerializeError e -> Right e- x -> Left x-- _ServiceError = prism ServiceError $ \case- ServiceError e -> Right e- x -> Left x--data ServiceConfig = ServiceConfig- { _svcId :: !ServiceId- , _svcHost :: !ByteString- , _svcPath :: !Builder- , _svcPort :: !Int- , _svcSecure :: !Bool- , _svcTimeout :: !(Maybe Seconds)- }--defaultService :: ServiceId -> ByteString -> ServiceConfig-defaultService i h = ServiceConfig- { _svcId = i- , _svcHost = h- , _svcPath = mempty- , _svcPort = 443- , _svcSecure = True- , _svcTimeout = Just 70- }---- | The remote host name, used for both the IP address to connect to and the--- host request header.-serviceHost :: Lens' ServiceConfig ByteString-serviceHost = lens _svcHost (\s a -> s { _svcHost = a })---- | The remote port to connect to.------ Defaults to @443@.-servicePort :: Lens' ServiceConfig Int-servicePort = lens _svcPort (\s a -> s { _svcPort = a })---- | A path prefix that is prepended to any sent HTTP request.------ Defaults to @mempty@.-servicePath :: Lens' ServiceConfig Builder-servicePath = lens _svcPath (\s a -> s { _svcPath = a })---- | Whether to use HTTPS/SSL.------ Defaults to @True@.-serviceSecure :: Lens' ServiceConfig Bool-serviceSecure = lens _svcSecure (\s a -> s { _svcSecure = a })---- | Number of seconds to wait for a response.-serviceTimeout :: Lens' ServiceConfig (Maybe Seconds)-serviceTimeout = lens _svcTimeout (\s a -> s { _svcTimeout = a })---- | A single part of a (potentially multipart) request body.------ /Note:/ The 'IsString' instance defaults to a @text/plain@ MIME type.-data GBody = GBody !MediaType !RequestBody--instance IsString GBody where- fromString = GBody ("text" // "plain") . fromString---- | A lens into the 'MediaType' of a request 'Body'.-bodyContentType :: Lens' GBody MediaType-bodyContentType = lens (\(GBody m _) -> m) (\(GBody _ b) m -> GBody m b)---- | An intermediary request builder.-data Request = Request- { _rqPath :: !Builder- , _rqQuery :: !(DList (ByteString, Maybe ByteString))- , _rqHeaders :: !(DList (HeaderName, ByteString))- , _rqBody :: ![GBody]- }--instance Monoid Request where- mempty = Request mempty mempty mempty mempty- mappend = (<>)--instance Semigroup Request where- a <> b = Request- (_rqPath a <> "/" <> _rqPath b)- (_rqQuery a <> _rqQuery b)- (_rqHeaders a <> _rqHeaders b)- (_rqBody b <> _rqBody a)--appendPath :: Request -> Builder -> Request-appendPath rq x = rq { _rqPath = _rqPath rq <> "/" <> x }--appendPaths :: ToHttpApiData a => Request -> [a] -> Request-appendPaths rq = appendPath rq . foldMap (mappend "/" . buildText)--appendQuery :: Request -> ByteString -> Maybe Text -> Request-appendQuery rq k v = rq- { _rqQuery = DList.snoc (_rqQuery rq) (k, Text.encodeUtf8 <$> v)- }--appendHeader :: Request -> HeaderName -> Maybe Text -> Request-appendHeader rq _ Nothing = rq-appendHeader rq k (Just v) = rq- { _rqHeaders = DList.snoc (_rqHeaders rq) (k, Text.encodeUtf8 v)- }--setBody :: Request -> [GBody] -> Request-setBody rq bs = rq { _rqBody = bs }---- | A materialised 'http-client' request and associated response parser.-data GClient a = GClient- { _cliAccept :: !(Maybe MediaType)- , _cliMethod :: !Method- , _cliCheck :: !(Status -> Bool)- , _cliService :: !ServiceConfig- , _cliRequest :: !Request- , _cliResponse :: !(Stream -> ResourceT IO (Either (String, LBS.ByteString) a))- }--clientService :: Lens' (GClient a) ServiceConfig-clientService = lens _cliService (\s a -> s { _cliService = a })--mime :: FromStream c a- => Proxy c- -> Method- -> [Int]- -> Request- -> ServiceConfig- -> GClient a-mime p = gClient (fromStream p) (Just (contentType p))--discard :: Method- -> [Int]- -> Request- -> ServiceConfig- -> GClient ()-discard = gClient (\b -> runConduit (b .| Conduit.sinkNull) >> pure (Right ())) Nothing--gClient :: (Stream -> ResourceT IO (Either (String, LBS.ByteString) a))- -> Maybe MediaType- -> Method- -> [Int]- -> Request- -> ServiceConfig- -> GClient a-gClient f cs m statuses rq s = GClient- { _cliAccept = cs- , _cliMethod = m- , _cliCheck = \status -> fromEnum status `elem` statuses- , _cliService = s- , _cliRequest = rq- , _cliResponse = f- }--class Accept c => ToBody c a where- toBody :: Proxy c -> a -> GBody--instance ToBody OctetStream ByteString where- toBody p = GBody (contentType p) . RequestBodyBS--instance ToBody OctetStream LBS.ByteString where- toBody p = GBody (contentType p) . RequestBodyLBS--instance ToBody PlainText ByteString where- toBody p = GBody (contentType p) . RequestBodyBS--instance ToBody PlainText LBS.ByteString where- toBody p = GBody (contentType p) . RequestBodyLBS--instance ToJSON a => ToBody JSON a where- toBody p = GBody (contentType p) . RequestBodyLBS . encode--class Accept c => FromStream c a where- fromStream :: Proxy c- -> Stream- -> ResourceT IO (Either (String, LBS.ByteString) a)--instance FromStream OctetStream Stream where- fromStream Proxy = pure . Right--instance FromJSON a => FromStream JSON a where- fromStream Proxy s = do- bs <- sinkLBS s- case eitherDecode bs of- Left e -> pure $! Left (e, bs)- Right x -> pure $! Right x--class GoogleRequest a where- type Rs a :: *- type Scopes a :: [Symbol]-- requestClient :: a -> GClient (Rs a)--class GoogleClient fn where- type Fn fn :: *-- buildClient :: Proxy fn -> Request -> Fn fn---- | Multiple path captures, with @[xs]@ forming @/<x1>/<x2>/<x2>/...@.-data Captures (s :: Symbol) a- deriving (Typeable)---- | Form a Google style sub-resource, such as @/<capture>:<mode>@.-data CaptureMode (s :: Symbol) (m :: Symbol) a- deriving (Typeable)--data MultipartRelated (cs :: [*]) m- deriving (Typeable)--instance ( ToBody c m- , GoogleClient fn- ) => GoogleClient (MultipartRelated (c ': cs) m :> fn) where- type Fn (MultipartRelated (c ': cs) m :> fn) = m -> GBody -> Fn fn-- buildClient Proxy rq m b =- buildClient (Proxy :: Proxy fn) $- setBody rq [toBody (Proxy :: Proxy c) m, b]--instance GoogleClient fn => GoogleClient (AltMedia :> fn) where- type Fn (AltMedia :> fn) = GBody -> Fn fn-- buildClient Proxy rq b =- buildClient (Proxy :: Proxy fn) $- setBody rq [b]--instance (KnownSymbol s, GoogleClient fn) => GoogleClient (s :> fn) where- type Fn (s :> fn) = Fn fn-- buildClient Proxy rq = buildClient (Proxy :: Proxy fn) $- appendPath rq (buildSymbol (Proxy :: Proxy s))--instance (GoogleClient a, GoogleClient b) => GoogleClient (a :<|> b) where- type Fn (a :<|> b) = Fn a :<|> Fn b-- buildClient Proxy rq =- buildClient (Proxy :: Proxy a) rq- :<|> buildClient (Proxy :: Proxy b) rq--instance ( KnownSymbol s- , ToHttpApiData a- , GoogleClient fn- ) => GoogleClient (Capture s a :> fn) where- type Fn (Capture s a :> fn) = a -> Fn fn-- buildClient Proxy rq = buildClient (Proxy :: Proxy fn)- . appendPath rq- . buildText--instance ( KnownSymbol s- , ToHttpApiData a- , GoogleClient fn- ) => GoogleClient (Captures s a :> fn) where- type Fn (Captures s a :> fn) = [a] -> Fn fn-- buildClient Proxy rq = buildClient (Proxy :: Proxy fn)- . appendPaths rq--instance ( KnownSymbol s- , KnownSymbol m- , ToHttpApiData a- , GoogleClient fn- ) => GoogleClient (CaptureMode s m a :> fn) where- type Fn (CaptureMode s m a :> fn) = a -> Fn fn-- buildClient Proxy rq x = buildClient (Proxy :: Proxy fn)- . appendPath rq- $ buildText x <> ":" <> buildSymbol (Proxy :: Proxy m)--instance ( KnownSymbol s- , ToHttpApiData a- , GoogleClient fn- ) => GoogleClient (QueryParam s a :> fn) where- type Fn (QueryParam s a :> fn) = Maybe a -> Fn fn-- buildClient Proxy rq mx = buildClient (Proxy :: Proxy fn) $- case mx of- Nothing -> rq- Just x -> appendQuery rq k v- where- k = byteSymbol (Proxy :: Proxy s)- v = Just (toQueryParam x)--instance ( KnownSymbol s- , ToHttpApiData a- , GoogleClient fn- ) => GoogleClient (QueryParams s a :> fn) where- type Fn (QueryParams s a :> fn) = [a] -> Fn fn-- buildClient Proxy rq = buildClient (Proxy :: Proxy fn) . foldl' go rq- where- go r = appendQuery r k . Just . toQueryParam-- k = byteSymbol (Proxy :: Proxy s)--instance ( KnownSymbol s- , ToHttpApiData a- , GoogleClient fn- ) => GoogleClient (Header s a :> fn) where- type Fn (Header s a :> fn) = Maybe a -> Fn fn-- buildClient Proxy rq mx = buildClient (Proxy :: Proxy fn) $- case mx of- Nothing -> rq- Just x -> appendHeader rq (CI.mk k) v- where- k = byteSymbol (Proxy :: Proxy s)- v = Just (toQueryParam x)--instance ( ToBody c a- , GoogleClient fn- ) => GoogleClient (ReqBody (c ': cs) a :> fn) where- type Fn (ReqBody (c ': cs) a :> fn) = a -> Fn fn-- buildClient Proxy rq x =- buildClient (Proxy :: Proxy fn) $- setBody rq [toBody (Proxy :: Proxy c) x]--instance {-# OVERLAPPABLE #-}- FromStream c a => GoogleClient (Get (c ': cs) a) where- type Fn (Get (c ': cs) a) = ServiceConfig -> GClient a-- buildClient Proxy = mime (Proxy :: Proxy c) methodGet [200, 203]--instance {-# OVERLAPPING #-}- GoogleClient (Get (c ': cs) ()) where- type Fn (Get (c ': cs) ()) = ServiceConfig -> GClient ()-- buildClient Proxy = discard methodGet [204]--instance {-# OVERLAPPABLE #-}- (FromStream c a, cs' ~ (c ': cs)) => GoogleClient (Post cs' a) where- type Fn (Post cs' a) = ServiceConfig -> GClient a-- buildClient Proxy = mime (Proxy :: Proxy c) methodPost [200, 201]--instance {-# OVERLAPPING #-}- GoogleClient (Post cs ()) where- type Fn (Post cs ()) = ServiceConfig -> GClient ()-- buildClient Proxy = discard methodPost [204]--instance {-# OVERLAPPABLE #-}- FromStream c a => GoogleClient (Put (c ': cs) a) where- type Fn (Put (c ': cs) a) = ServiceConfig -> GClient a-- buildClient Proxy = mime (Proxy :: Proxy c) methodPut [200, 201]--instance {-# OVERLAPPING #-}- GoogleClient (Put (c ': cs) ()) where- type Fn (Put (c ': cs) ()) = ServiceConfig -> GClient ()-- buildClient Proxy = discard methodPut [204]--instance {-# OVERLAPPABLE #-}- FromStream c a => GoogleClient (Patch (c ': cs) a) where- type Fn (Patch (c ': cs) a) = ServiceConfig -> GClient a-- buildClient Proxy = mime (Proxy :: Proxy c) methodPatch [200, 201]--instance {-# OVERLAPPING #-}- GoogleClient (Patch (c ': cs) ()) where- type Fn (Patch (c ': cs) ()) = ServiceConfig -> GClient ()-- buildClient Proxy = discard methodPatch [204]--instance {-# OVERLAPPABLE #-}- FromStream c a => GoogleClient (Delete (c ': cs) a) where- type Fn (Delete (c ': cs) a) = ServiceConfig -> GClient a-- buildClient Proxy = mime (Proxy :: Proxy c) methodDelete [200, 202]--instance {-# OVERLAPPING #-}- GoogleClient (Delete (c ': cs) ()) where- type Fn (Delete (c ': cs) ()) = ServiceConfig -> GClient ()-- buildClient Proxy = discard methodDelete [204]--sinkLBS :: Stream -> ResourceT IO LBS.ByteString-sinkLBS = runConduit . (.| Conduit.sinkLazy)--buildText :: ToHttpApiData a => a -> Builder-buildText = Build.fromText . toQueryParam--buildSymbol :: forall n proxy. KnownSymbol n => proxy n -> Builder-buildSymbol = Build.fromString . symbolVal--byteSymbol :: forall n proxy. KnownSymbol n => proxy n -> ByteString-byteSymbol = BS8.pack . symbolVal---- | An integral value representing seconds.-newtype Seconds = Seconds Int- deriving- ( Eq- , Ord- , Read- , Show- , Enum- , Num- , Bounded- , Integral- , Real- , Data- , Typeable- , Generic- )--seconds :: Seconds -> Int-seconds (Seconds n)- | n < 0 = 0- | otherwise = n--microseconds :: Seconds -> Int-microseconds = (1000000 *) . seconds--newtype GFieldMask = GFieldMask Text- deriving- ( Eq- , Ord- , Show- , Read- , IsString- , Generic- , Data- , Typeable- , FromHttpApiData- , ToHttpApiData- , FromJSON- , ToJSON- )
test/Main.hs view
@@ -1,5 +1,5 @@ -- Module : Main--- Copyright : (c) 2015-2016 Brendan Hay+-- Copyright : (c) 2015-2022 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com> -- Stability : experimental@@ -7,10 +7,11 @@ module Main (main) where -import Test.Tasty+import Test.Tasty main :: IO ()-main = defaultMain $- testGroup "gogol"- [- ]+main =+ defaultMain $+ testGroup+ "gogol"+ []