-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | WAI based library for web api -- -- WAI based library for web api @package webapi @version 0.2.0.0 -- | Defines various types to represent the HTTP methods. module WebApi.Method -- | Type representing a GET method. data GET -- | Type representing a POST method. data POST -- | Type representing a PUT method. data PUT -- | Type representing a DELETE method. data DELETE -- | Type representing a HEAD method. data HEAD -- | Type representing a PATCH method. data PATCH -- | Type representing a TRACE method. data TRACE -- | Type representing a OPTIONS method. data OPTIONS -- | Type representing a CONNECT method. data CONNECT -- | Type representing a Custom method. data CUSTOM (m :: Symbol) -- | Singleton class for method types. class SingMethod (meth :: *) singMethod :: SingMethod meth => Proxy meth -> Method instance WebApi.Method.SingMethod WebApi.Method.GET instance WebApi.Method.SingMethod WebApi.Method.POST instance WebApi.Method.SingMethod WebApi.Method.PUT instance WebApi.Method.SingMethod WebApi.Method.DELETE instance WebApi.Method.SingMethod WebApi.Method.OPTIONS instance WebApi.Method.SingMethod WebApi.Method.HEAD instance WebApi.Method.SingMethod WebApi.Method.TRACE instance WebApi.Method.SingMethod WebApi.Method.PATCH instance WebApi.Method.SingMethod WebApi.Method.CONNECT instance GHC.TypeLits.KnownSymbol m => WebApi.Method.SingMethod (WebApi.Method.CUSTOM m) -- | Param serialization and deserialization. ToParam and -- EncodeParam are responsible for serialization part. -- EncodeParam converts the value into a wire format. -- ToParam is responsible for creating (nested) key value pairs, -- which can be then used to deserialize to original type. For example -- --
-- encodeParam 5 == "5"
--
-- data Foo = Foo { foo :: Int }
-- deriving (Show, Eq, Generic)
--
-- data Bar = Bar { bar :: Foo }
-- deriving (Show, Eq, Generic)
--
-- instance ToParam Foo 'FormParam
-- instance ToParam Bar 'FormParam
--
-- toParam (Proxy :: Proxy 'FormParam) "" (Bar (Foo 5)) == [("bar.foo","5")]
--
--
-- Deserialization works analogously, FromParam and
-- DecodeParam are counterparts to ToParam and
-- EncodeParam respectively. Generic instances are provided for
-- all of them. This means that the user only need to derive Generic in
-- their type, and provide instance with an empty body. Note that for
-- headers FromHeader and ToHeader is being used in place
-- of FromParam and ToParam. Nesting is not supported for
-- headers.
module WebApi.Param
-- | Serialize a type to a given type of kind ParamK.
class ToParam a (parK :: ParamK) where toParam pt pfx = gtoParam pt pfx (ParamAcc 0 False) ParamSettings . from
toParam :: ToParam a parK => Proxy (parK :: ParamK) -> ByteString -> a -> [SerializedData parK]
-- | Serialize a type to ByteString.
class EncodeParam (t :: *) where encodeParam = gEncodeParam . from
encodeParam :: EncodeParam t => t -> ByteString
-- | Serialize a type to the header params
class ToHeader a where toHeader = gtoHeader "" (ParamAcc 0 False) ParamSettings . from
toHeader :: ToHeader a => a -> [Header]
-- | Define result of serialization of a type of kind ParamK.
-- | Serialize a type into query params.
toQueryParam :: (ToParam a QueryParam) => a -> Query
-- | Serialize a type into form params.
toFormParam :: (ToParam a FormParam) => a -> [(ByteString, ByteString)]
-- | Serialize a type into file params.
toFileParam :: (ToParam a FileParam) => a -> [(ByteString, FileInfo FilePath)]
-- | Serialize a type into path params.
toPathParam :: (ToParam a PathParam) => a -> [ByteString]
-- | Serialize a type into cookie.
toCookie :: (ToParam a Cookie) => a -> [(ByteString, ByteString)]
-- | Serialize a type without nesting.
toNonNestedParam :: (ToParam (NonNested a) parK, EncodeParam a) => Proxy (parK :: ParamK) -> ByteString -> a -> [SerializedData parK]
-- | (Try to) Deserialize a type from a given type of kind ParamK.
class FromParam a (parK :: ParamK) where fromParam pt pfx = (fmap to) . gfromParam pt pfx (ParamAcc 0 False) ParamSettings
fromParam :: FromParam a parK => Proxy (parK :: ParamK) -> ByteString -> Trie (DeSerializedData parK) -> Validation [ParamErr] a
-- | (Try to) Deserialize a type from ByteString.
class DecodeParam (t :: *) where decodeParam = (fmap to) . gDecodeParam
decodeParam :: DecodeParam t => ByteString -> Maybe t
-- | (Try to) Deserialize a type from the header params
class FromHeader a where fromHeader = (fmap to) . gfromHeader "" (ParamAcc 0 False) ParamSettings
fromHeader :: FromHeader a => [Header] -> Validation [ParamErr] a
-- | Datatype representing the parsed result of params.
newtype Validation e a
Validation :: Either e a -> Validation e a
[getValidation] :: Validation e a -> Either e a
-- | Errors that occured during deserialization.
data ParamErr
-- | The key was not found.
NotFound :: ByteString -> ParamErr
-- | A parse error occured while deserializing the type.
ParseErr :: ByteString -> Text -> ParamErr
-- | Convert the ParamErr that occured during deserialization into
-- ApiErr type which can then be put in Response.
class ParamErrToApiErr apiErr
toApiErr :: ParamErrToApiErr apiErr => [ParamErr] -> apiErr
-- | Define result of deserialization of a type of kind ParamK.
-- | (Try to) Deserialize a type from query params.
fromQueryParam :: (FromParam a QueryParam) => Query -> Validation [ParamErr] a
-- | (Try to) Deserialize a type from form params.
fromFormParam :: (FromParam a FormParam) => [(ByteString, ByteString)] -> Validation [ParamErr] a
-- | (Try to) Deserialize a type from file params.
fromFileParam :: (FromParam a FileParam) => [(ByteString, FileInfo FilePath)] -> Validation [ParamErr] a
-- | (Try to) Deserialize a type from cookie.
fromCookie :: (FromParam a Cookie) => [(ByteString, ByteString)] -> Validation [ParamErr] a
-- | Lookup a value from the Trie using the given key.
lookupParam :: Proxy (parK :: ParamK) -> ByteString -> Trie (DeSerializedData parK) -> Maybe (DeSerializedData parK)
-- | (Try to) Deserialize a type without nesting.
fromNonNestedParam :: (FromParam (NonNested a) parK, DecodeParam a) => Proxy (parK :: ParamK) -> ByteString -> Trie (DeSerializedData parK) -> Validation [ParamErr] a
-- | Serializing JsonOf will produce a JSON representation of the
-- value contained within. This is useful if params has to be sent as
-- JSON.
newtype JsonOf a
JsonOf :: a -> JsonOf a
[getValue] :: JsonOf a -> a
-- | Use this type if a key is required but the value is optional.
newtype OptValue a
OptValue :: Maybe a -> OptValue a
[toMaybe] :: OptValue a -> Maybe a
-- | A type for holding a file.
newtype FileInfo
FileInfo :: FileInfo FilePath -> FileInfo
[fileInfo] :: FileInfo -> FileInfo FilePath
-- | Use this type if for serialization / deserialization nesting is not
-- required. The type contained within most likely requires
-- EncodeParam / DecodeParam.
newtype NonNested a
NonNested :: a -> NonNested a
[getNonNestedParam] :: NonNested a -> a
-- | (Kind) Describes the various types of Param.
data ParamK
QueryParam :: ParamK
FormParam :: ParamK
FileParam :: ParamK
PathParam :: ParamK
Cookie :: ParamK
-- | Obtain the file path from FileInfo.
filePath :: FileInfo -> FilePath
-- | Nest the key with a prefix.
--
-- -- nest "pfx" "key" == "pfx.key" -- nest "" "key" == "key" --nest :: ByteString -> ByteString -> ByteString instance GHC.Classes.Eq WebApi.Param.ParamSettings instance GHC.Show.Show WebApi.Param.ParamSettings instance GHC.Classes.Eq WebApi.Param.ParamAcc instance GHC.Show.Show WebApi.Param.ParamAcc instance GHC.Classes.Eq WebApi.Param.ParamErr instance GHC.Show.Show WebApi.Param.ParamErr instance GHC.Read.Read a => GHC.Read.Read (WebApi.Param.NonNested a) instance GHC.Classes.Eq a => GHC.Classes.Eq (WebApi.Param.NonNested a) instance GHC.Show.Show a => GHC.Show.Show (WebApi.Param.NonNested a) instance (GHC.Show.Show e, GHC.Show.Show a) => GHC.Show.Show (WebApi.Param.Validation e a) instance GHC.Base.Functor (WebApi.Param.Validation e) instance (GHC.Classes.Eq e, GHC.Classes.Eq a) => GHC.Classes.Eq (WebApi.Param.Validation e a) instance GHC.Classes.Eq WebApi.Param.Unit instance GHC.Show.Show WebApi.Param.Unit instance GHC.Classes.Ord a => GHC.Classes.Ord (WebApi.Param.JsonOf a) instance GHC.Classes.Eq a => GHC.Classes.Eq (WebApi.Param.JsonOf a) instance GHC.Read.Read a => GHC.Read.Read (WebApi.Param.JsonOf a) instance GHC.Show.Show a => GHC.Show.Show (WebApi.Param.JsonOf a) instance GHC.Classes.Ord a => GHC.Classes.Ord (WebApi.Param.OptValue a) instance GHC.Classes.Eq a => GHC.Classes.Eq (WebApi.Param.OptValue a) instance GHC.Read.Read a => GHC.Read.Read (WebApi.Param.OptValue a) instance GHC.Show.Show a => GHC.Show.Show (WebApi.Param.OptValue a) instance GHC.Show.Show WebApi.Param.FileInfo instance GHC.Classes.Eq WebApi.Param.FileInfo instance Data.Aeson.Types.Class.ToJSON a => Data.Aeson.Types.Class.ToJSON (WebApi.Param.JsonOf a) instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (WebApi.Param.JsonOf a) instance GHC.Base.Monoid e => GHC.Base.Applicative (WebApi.Param.Validation e) instance WebApi.Param.EncodeParam Data.ByteString.Internal.ByteString instance WebApi.Param.DecodeParam Data.ByteString.Internal.ByteString instance WebApi.Param.EncodeParam GHC.Types.Int instance WebApi.Param.DecodeParam GHC.Types.Int instance WebApi.Param.EncodeParam GHC.Int.Int8 instance WebApi.Param.DecodeParam GHC.Int.Int8 instance WebApi.Param.EncodeParam GHC.Int.Int16 instance WebApi.Param.DecodeParam GHC.Int.Int16 instance WebApi.Param.EncodeParam GHC.Int.Int32 instance WebApi.Param.DecodeParam GHC.Int.Int32 instance WebApi.Param.EncodeParam GHC.Int.Int64 instance WebApi.Param.DecodeParam GHC.Int.Int64 instance WebApi.Param.EncodeParam GHC.Types.Word instance WebApi.Param.DecodeParam GHC.Types.Word instance WebApi.Param.EncodeParam GHC.Word.Word8 instance WebApi.Param.DecodeParam GHC.Word.Word8 instance WebApi.Param.EncodeParam GHC.Word.Word16 instance WebApi.Param.DecodeParam GHC.Word.Word16 instance WebApi.Param.EncodeParam GHC.Word.Word32 instance WebApi.Param.DecodeParam GHC.Word.Word32 instance WebApi.Param.EncodeParam GHC.Word.Word64 instance WebApi.Param.DecodeParam GHC.Word.Word64 instance WebApi.Param.EncodeParam GHC.Types.Float instance WebApi.Param.DecodeParam GHC.Types.Float instance WebApi.Param.EncodeParam GHC.Types.Double instance WebApi.Param.DecodeParam GHC.Types.Double instance WebApi.Param.EncodeParam GHC.Types.Char instance WebApi.Param.DecodeParam GHC.Types.Char instance WebApi.Param.EncodeParam Data.Text.Internal.Text instance WebApi.Param.DecodeParam Data.Text.Internal.Text instance WebApi.Param.EncodeParam Data.Time.Calendar.Days.Day instance WebApi.Param.DecodeParam Data.Time.Calendar.Days.Day instance WebApi.Param.EncodeParam Data.Time.Clock.UTC.UTCTime instance WebApi.Param.DecodeParam Data.Time.Clock.UTC.UTCTime instance WebApi.Param.EncodeParam WebApi.Param.Unit instance WebApi.Param.DecodeParam WebApi.Param.Unit instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b) => WebApi.Param.EncodeParam (a, b) instance (WebApi.Param.DecodeParam a, WebApi.Param.DecodeParam b) => WebApi.Param.DecodeParam (a, b) instance WebApi.Param.EncodeParam GHC.Types.Bool instance WebApi.Param.DecodeParam GHC.Types.Bool instance WebApi.Param.EncodeParam GHC.Integer.Type.Integer instance WebApi.Param.DecodeParam GHC.Integer.Type.Integer instance Data.Aeson.Types.Class.ToJSON a => WebApi.Param.EncodeParam (WebApi.Param.JsonOf a) instance Data.Aeson.Types.Class.FromJSON a => WebApi.Param.DecodeParam (WebApi.Param.JsonOf a) instance WebApi.Param.GHttpParam f => WebApi.Param.GHttpParam (GHC.Generics.D1 c f) instance (WebApi.Param.GHttpParam f, WebApi.Param.GHttpParam g) => WebApi.Param.GHttpParam (f GHC.Generics.:+: g) instance (WebApi.Param.GHttpParam f, GHC.Generics.Constructor c) => WebApi.Param.GHttpParam (GHC.Generics.C1 c f) instance WebApi.Param.GHttpParam GHC.Generics.U1 instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam (WebApi.Param.NonNested a) 'WebApi.Param.QueryParam instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam (WebApi.Param.NonNested a) 'WebApi.Param.FormParam instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam (WebApi.Param.NonNested a) 'WebApi.Param.Cookie instance (WebApi.Param.DecodeParam a, Data.Typeable.Internal.Typeable a) => WebApi.Param.FromParam (WebApi.Param.NonNested a) 'WebApi.Param.QueryParam instance (WebApi.Param.DecodeParam a, Data.Typeable.Internal.Typeable a) => WebApi.Param.FromParam (WebApi.Param.NonNested a) 'WebApi.Param.FormParam instance (WebApi.Param.DecodeParam a, Data.Typeable.Internal.Typeable a) => WebApi.Param.FromParam (WebApi.Param.NonNested a) 'WebApi.Param.Cookie instance WebApi.Param.ToParam () parK instance WebApi.Param.ToHeader () instance WebApi.Param.ToParam WebApi.Param.Unit 'WebApi.Param.QueryParam instance WebApi.Param.ToParam WebApi.Param.Unit 'WebApi.Param.FormParam instance WebApi.Param.ToParam WebApi.Param.Unit 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Types.Int 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Types.Int 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Types.Int 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Int.Int8 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Int.Int8 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Int.Int8 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Int.Int16 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Int.Int16 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Int.Int16 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Int.Int32 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Int.Int32 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Int.Int32 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Int.Int64 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Int.Int64 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Int.Int64 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Types.Word 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Types.Word 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Types.Word 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Word.Word8 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Word.Word8 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Word.Word8 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Word.Word16 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Word.Word16 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Word.Word16 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Word.Word32 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Word.Word32 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Word.Word32 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Word.Word64 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Word.Word64 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Word.Word64 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Integer.Type.Integer 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Integer.Type.Integer 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Integer.Type.Integer 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Types.Bool 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Types.Bool 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Types.Bool 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Types.Double 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Types.Double 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Types.Double 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Types.Float 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Types.Float 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Types.Float 'WebApi.Param.Cookie instance WebApi.Param.ToParam GHC.Types.Char 'WebApi.Param.QueryParam instance WebApi.Param.ToParam GHC.Types.Char 'WebApi.Param.FormParam instance WebApi.Param.ToParam GHC.Types.Char 'WebApi.Param.Cookie instance WebApi.Param.ToParam Data.Text.Internal.Text 'WebApi.Param.QueryParam instance WebApi.Param.ToParam Data.Text.Internal.Text 'WebApi.Param.FormParam instance WebApi.Param.ToParam Data.Text.Internal.Text 'WebApi.Param.Cookie instance WebApi.Param.ToParam Data.ByteString.Internal.ByteString 'WebApi.Param.QueryParam instance WebApi.Param.ToParam Data.ByteString.Internal.ByteString 'WebApi.Param.FormParam instance WebApi.Param.ToParam Data.ByteString.Internal.ByteString 'WebApi.Param.Cookie instance WebApi.Param.ToParam Data.Time.Calendar.Days.Day 'WebApi.Param.QueryParam instance WebApi.Param.ToParam Data.Time.Calendar.Days.Day 'WebApi.Param.FormParam instance WebApi.Param.ToParam Data.Time.Calendar.Days.Day 'WebApi.Param.Cookie instance WebApi.Param.ToParam Data.Time.Clock.UTC.UTCTime 'WebApi.Param.QueryParam instance WebApi.Param.ToParam Data.Time.Clock.UTC.UTCTime 'WebApi.Param.FormParam instance WebApi.Param.ToParam Data.Time.Clock.UTC.UTCTime 'WebApi.Param.Cookie instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam (WebApi.Param.OptValue a) 'WebApi.Param.QueryParam instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam (WebApi.Param.OptValue a) 'WebApi.Param.FormParam instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam (WebApi.Param.OptValue a) 'WebApi.Param.Cookie instance (Data.Aeson.Types.Class.ToJSON a, Data.Aeson.Types.Class.FromJSON a) => WebApi.Param.ToParam (WebApi.Param.JsonOf a) 'WebApi.Param.QueryParam instance (Data.Aeson.Types.Class.ToJSON a, Data.Aeson.Types.Class.FromJSON a) => WebApi.Param.ToParam (WebApi.Param.JsonOf a) 'WebApi.Param.FormParam instance (Data.Aeson.Types.Class.ToJSON a, Data.Aeson.Types.Class.FromJSON a) => WebApi.Param.ToParam (WebApi.Param.JsonOf a) 'WebApi.Param.Cookie instance WebApi.Param.ToParam a par => WebApi.Param.ToParam (GHC.Base.Maybe a) par instance (WebApi.Param.ToParam a par, WebApi.Param.ToParam b par) => WebApi.Param.ToParam (Data.Either.Either a b) par instance WebApi.Param.ToParam a par => WebApi.Param.ToParam [a] par instance WebApi.Param.ToParam a par => WebApi.Param.ToParam (Data.Vector.Vector a) par instance WebApi.Param.FromParam () parK instance WebApi.Param.FromHeader () instance WebApi.Param.FromParam WebApi.Param.Unit 'WebApi.Param.QueryParam instance WebApi.Param.FromParam WebApi.Param.Unit 'WebApi.Param.FormParam instance WebApi.Param.FromParam WebApi.Param.Unit 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Types.Bool 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Types.Bool 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Types.Bool 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Types.Char 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Types.Char 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Types.Char 'WebApi.Param.Cookie instance WebApi.Param.FromParam Data.Time.Clock.UTC.UTCTime 'WebApi.Param.QueryParam instance WebApi.Param.FromParam Data.Time.Clock.UTC.UTCTime 'WebApi.Param.FormParam instance WebApi.Param.FromParam Data.Time.Clock.UTC.UTCTime 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Types.Int 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Types.Int 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Types.Int 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Int.Int8 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Int.Int8 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Int.Int8 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Int.Int16 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Int.Int16 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Int.Int16 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Int.Int32 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Int.Int32 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Int.Int32 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Int.Int64 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Int.Int64 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Int.Int64 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Integer.Type.Integer 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Integer.Type.Integer 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Integer.Type.Integer 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Types.Word 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Types.Word 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Types.Word 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Word.Word8 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Word.Word8 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Word.Word8 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Word.Word16 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Word.Word16 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Word.Word16 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Word.Word32 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Word.Word32 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Word.Word32 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Word.Word64 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Word.Word64 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Word.Word64 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Types.Double 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Types.Double 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Types.Double 'WebApi.Param.Cookie instance WebApi.Param.FromParam GHC.Types.Float 'WebApi.Param.QueryParam instance WebApi.Param.FromParam GHC.Types.Float 'WebApi.Param.FormParam instance WebApi.Param.FromParam GHC.Types.Float 'WebApi.Param.Cookie instance WebApi.Param.FromParam Data.ByteString.Internal.ByteString 'WebApi.Param.QueryParam instance WebApi.Param.FromParam Data.ByteString.Internal.ByteString 'WebApi.Param.FormParam instance WebApi.Param.FromParam Data.ByteString.Internal.ByteString 'WebApi.Param.Cookie instance WebApi.Param.FromParam a par => WebApi.Param.FromParam (GHC.Base.Maybe a) par instance (WebApi.Param.FromParam a par, WebApi.Param.FromParam b par) => WebApi.Param.FromParam (Data.Either.Either a b) par instance WebApi.Param.FromParam Data.Text.Internal.Text 'WebApi.Param.QueryParam instance WebApi.Param.FromParam Data.Text.Internal.Text 'WebApi.Param.FormParam instance WebApi.Param.FromParam Data.Text.Internal.Text 'WebApi.Param.Cookie instance WebApi.Param.FromParam Data.Time.Calendar.Days.Day 'WebApi.Param.QueryParam instance WebApi.Param.FromParam Data.Time.Calendar.Days.Day 'WebApi.Param.FormParam instance WebApi.Param.FromParam Data.Time.Calendar.Days.Day 'WebApi.Param.Cookie instance (GHC.Show.Show (WebApi.Param.DeSerializedData par), WebApi.Param.FromParam a par) => WebApi.Param.FromParam [a] par instance (GHC.Show.Show (WebApi.Param.DeSerializedData par), WebApi.Param.FromParam a par) => WebApi.Param.FromParam (Data.Vector.Vector a) par instance WebApi.Param.DecodeParam a => WebApi.Param.FromParam (WebApi.Param.OptValue a) 'WebApi.Param.QueryParam instance WebApi.Param.DecodeParam a => WebApi.Param.FromParam (WebApi.Param.OptValue a) 'WebApi.Param.FormParam instance WebApi.Param.DecodeParam a => WebApi.Param.FromParam (WebApi.Param.OptValue a) 'WebApi.Param.Cookie instance WebApi.Param.ToParam WebApi.Param.FileInfo 'WebApi.Param.FileParam instance WebApi.Param.FromParam WebApi.Param.FileInfo 'WebApi.Param.FileParam instance WebApi.Param.ToParam Data.ByteString.Internal.ByteString 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Types.Int 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Int.Int8 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Int.Int16 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Int.Int32 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Int.Int64 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Types.Word 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Word.Word8 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Word.Word16 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Word.Word32 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Word.Word64 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Types.Float 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Types.Double 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Types.Char 'WebApi.Param.PathParam instance WebApi.Param.ToParam Data.Text.Internal.Text 'WebApi.Param.PathParam instance WebApi.Param.ToParam Data.Time.Calendar.Days.Day 'WebApi.Param.PathParam instance WebApi.Param.ToParam Data.Time.Clock.UTC.UTCTime 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Types.Bool 'WebApi.Param.PathParam instance WebApi.Param.ToParam GHC.Integer.Type.Integer 'WebApi.Param.PathParam instance Data.Aeson.Types.Class.ToJSON a => WebApi.Param.ToParam (WebApi.Param.JsonOf a) 'WebApi.Param.PathParam instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b) => WebApi.Param.ToParam (a, b) 'WebApi.Param.PathParam instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c) => WebApi.Param.ToParam (a, b, c) 'WebApi.Param.PathParam instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d) => WebApi.Param.ToParam (a, b, c, d) 'WebApi.Param.PathParam instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e) => WebApi.Param.ToParam (a, b, c, d, e) 'WebApi.Param.PathParam instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e, WebApi.Param.EncodeParam f) => WebApi.Param.ToParam (a, b, c, d, e, f) 'WebApi.Param.PathParam instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e, WebApi.Param.EncodeParam f, WebApi.Param.EncodeParam g, WebApi.Param.EncodeParam h) => WebApi.Param.ToParam (a, b, c, d, e, f, g, h) 'WebApi.Param.PathParam instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e, WebApi.Param.EncodeParam f, WebApi.Param.EncodeParam g, WebApi.Param.EncodeParam h, WebApi.Param.EncodeParam i) => WebApi.Param.ToParam (a, b, c, d, e, f, g, h, i) 'WebApi.Param.PathParam instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e, WebApi.Param.EncodeParam f, WebApi.Param.EncodeParam g, WebApi.Param.EncodeParam h, WebApi.Param.EncodeParam i, WebApi.Param.EncodeParam j) => WebApi.Param.ToParam (a, b, c, d, e, f, g, h, i, j) 'WebApi.Param.PathParam instance Data.Aeson.Types.Class.ToJSON WebApi.Param.ParamErr instance WebApi.Param.ParamErrToApiErr () instance WebApi.Param.ParamErrToApiErr Data.Text.Internal.Text instance WebApi.Param.ParamErrToApiErr Data.Aeson.Types.Internal.Value instance (WebApi.Param.GToHeader f, WebApi.Param.GToHeader g) => WebApi.Param.GToHeader (f GHC.Generics.:+: g) instance (WebApi.Param.GToHeader f, WebApi.Param.GToHeader g) => WebApi.Param.GToHeader (f GHC.Generics.:*: g) instance WebApi.Param.EncodeParam c => WebApi.Param.GToHeader (GHC.Generics.K1 i c) instance (WebApi.Param.GToHeader f, GHC.Generics.Constructor t) => WebApi.Param.GToHeader (GHC.Generics.M1 GHC.Generics.C t f) instance WebApi.Param.GToHeader f => WebApi.Param.GToHeader (GHC.Generics.M1 GHC.Generics.D t f) instance (WebApi.Param.GToHeader f, GHC.Generics.Selector t) => WebApi.Param.GToHeader (GHC.Generics.M1 GHC.Generics.S t f) instance WebApi.Param.GToHeader GHC.Generics.U1 instance (WebApi.Param.GFromHeader f, WebApi.Param.GFromHeader g) => WebApi.Param.GFromHeader (f GHC.Generics.:*: g) instance (WebApi.Param.GFromHeader f, WebApi.Param.GFromHeader g) => WebApi.Param.GFromHeader (f GHC.Generics.:+: g) instance (WebApi.Param.GFromHeader f, GHC.Generics.Constructor t) => WebApi.Param.GFromHeader (GHC.Generics.M1 GHC.Generics.C t f) instance (WebApi.Param.GFromHeader f, GHC.Generics.Datatype t) => WebApi.Param.GFromHeader (GHC.Generics.M1 GHC.Generics.D t f) instance (WebApi.Param.GFromHeader f, GHC.Generics.Selector t) => WebApi.Param.GFromHeader (GHC.Generics.M1 GHC.Generics.S t f) instance WebApi.Param.DecodeParam c => WebApi.Param.GFromHeader (GHC.Generics.K1 i c) instance WebApi.Param.GFromHeader GHC.Generics.U1 instance (WebApi.Param.GFromParam f parK, WebApi.Param.GFromParam g parK) => WebApi.Param.GFromParam (f GHC.Generics.:*: g) parK instance (WebApi.Param.GFromParam f parK, WebApi.Param.GFromParam g parK) => WebApi.Param.GFromParam (f GHC.Generics.:+: g) parK instance (WebApi.Param.GFromParam f parK, GHC.Generics.Constructor t) => WebApi.Param.GFromParam (GHC.Generics.M1 GHC.Generics.C t f) parK instance (WebApi.Param.GFromParam f parK, GHC.Generics.Datatype t) => WebApi.Param.GFromParam (GHC.Generics.M1 GHC.Generics.D t f) parK instance (WebApi.Param.GFromParam f parK, GHC.Generics.Selector t) => WebApi.Param.GFromParam (GHC.Generics.M1 GHC.Generics.S t f) parK instance WebApi.Param.FromParam c parK => WebApi.Param.GFromParam (GHC.Generics.K1 i c) parK instance WebApi.Param.FromParam WebApi.Param.Unit parK => WebApi.Param.GFromParam GHC.Generics.U1 parK instance (WebApi.Param.GToParam f parK, WebApi.Param.GToParam g parK) => WebApi.Param.GToParam (f GHC.Generics.:*: g) parK instance (WebApi.Param.GToParam f parK, WebApi.Param.GToParam g parK) => WebApi.Param.GToParam (f GHC.Generics.:+: g) parK instance WebApi.Param.ToParam c parK => WebApi.Param.GToParam (GHC.Generics.K1 i c) parK instance (WebApi.Param.GToParam f parK, GHC.Generics.Constructor t) => WebApi.Param.GToParam (GHC.Generics.M1 GHC.Generics.C t f) parK instance WebApi.Param.GToParam f parK => WebApi.Param.GToParam (GHC.Generics.M1 GHC.Generics.D t f) parK instance (WebApi.Param.GToParam f parK, GHC.Generics.Selector t) => WebApi.Param.GToParam (GHC.Generics.M1 GHC.Generics.S t f) parK instance WebApi.Param.ToParam WebApi.Param.Unit parK => WebApi.Param.GToParam GHC.Generics.U1 parK module WebApi.Versioning -- | A Style of versioning which has a Major version and a Minor version. data MajorMinor (ver :: (Nat, Nat)) MajorMinor :: MajorMinor -- | A Style of versioning which has only has a Major version. data Major (maj :: Nat) Major :: Major -- | Comparison between versions. class OrdVersion (ver :: *) where cmpVersion _ _ = (Proxy :: Proxy ord) cmpVersion :: (OrdVersion ver, ver ~ ((proxy :: k -> *) (v1 :: k)), ord ~ (VersionOrd (proxy v1) (proxy v2)), SingOrd ord) => proxy v1 -> proxy (v2 :: k) -> Proxy ord -- | Defines ordering of versions. -- | Comparison between two versions. Returns an Ord. -- --
-- >>> compareVersion (MajorMinor :: MajorMinor (0, 0)) (MajorMinor :: MajorMinor (0, 1)) == LT -- True --compareVersion :: (OrdVersion (proxy v1), SingOrd (VersionOrd (proxy v1) (proxy v2))) => proxy (v1 :: k) -> proxy (v2 :: k) -> Ordering instance WebApi.Versioning.SingOrd 'GHC.Types.EQ instance WebApi.Versioning.SingOrd 'GHC.Types.LT instance WebApi.Versioning.SingOrd 'GHC.Types.GT instance WebApi.Versioning.OrdVersion (WebApi.Versioning.Major maj) instance WebApi.Versioning.OrdVersion (WebApi.Versioning.MajorMinor '(maj, min)) module WebApi.ContentTypes -- | Type representing content type of application/json. data JSON -- | Type representing content type of text/plain. data PlainText -- | Singleton class for content type. class Accept ctype contentType :: Accept ctype => Proxy ctype -> MediaType -- | Encode a type into a specific content type. class (Accept a) => Encode a c encode :: Encode a c => Proxy a -> c -> Builder -- | (Try to) Decode a type from a specific content type. class (Accept c) => Decode c a decode :: Decode c a => Proxy c -> ByteString -> Either String a class FromText a fromText :: FromText a => Text -> Maybe a class ToText a toText :: ToText a => a -> Text -- | Encodings of type for all content types ctypes. class Encodings (ctypes :: [*]) a encodings :: Encodings ctypes a => Proxy ctypes -> a -> [(MediaType, Builder)] -- | Decodings of type for all content types ctypes. class Decodings (ctypes :: [*]) a decodings :: Decodings ctypes a => Proxy ctypes -> ByteString -> [(MediaType, Either String a)] instance (WebApi.ContentTypes.Accept ctype, WebApi.ContentTypes.Encode ctype a, WebApi.ContentTypes.Encodings ctypes a) => WebApi.ContentTypes.Encodings (ctype : ctypes) a instance WebApi.ContentTypes.Encodings '[] a instance (WebApi.ContentTypes.Accept ctype, WebApi.ContentTypes.Decode ctype a, WebApi.ContentTypes.Decodings ctypes a) => WebApi.ContentTypes.Decodings (ctype : ctypes) a instance WebApi.ContentTypes.Decodings '[] a instance WebApi.ContentTypes.Accept WebApi.ContentTypes.JSON instance WebApi.ContentTypes.Accept WebApi.ContentTypes.PlainText instance WebApi.ContentTypes.Accept WebApi.ContentTypes.OctetStream instance Data.Aeson.Types.Class.ToJSON c => WebApi.ContentTypes.Encode WebApi.ContentTypes.JSON c instance WebApi.ContentTypes.ToText a => WebApi.ContentTypes.Encode WebApi.ContentTypes.PlainText a instance Data.Aeson.Types.Class.FromJSON a => WebApi.ContentTypes.Decode WebApi.ContentTypes.JSON a instance WebApi.ContentTypes.FromText a => WebApi.ContentTypes.Decode WebApi.ContentTypes.PlainText a instance WebApi.ContentTypes.ToText Data.Text.Internal.Text instance WebApi.ContentTypes.FromText Data.Text.Internal.Text -- | Provides the contract for the web api. The contract consists of -- WebApi and ApiContract classes. WebApi contains -- information related to the entire group of endpoints whereas -- ApiContract is concerned with information related to each end -- point. Once the contract is written, it can be then used to -- --