-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simple and type safe web framework that can be automatically generate API documentation. -- @package apiary @version 1.1.2 -- | reexporting Network.Wai to reduce dependencies from apiary-* packages. module Web.Apiary.Wai -- | compatibility module for ghc-7.8 & ghc-7.6. module Data.Apiary.Compat -- | (Kind) This is the kind of type-level symbols. data Symbol :: * -- | This class gives the integer associated with a type-level symbol. -- There are instances of the class for every concrete literal: "hello", -- etc. -- -- Since: 4.7.0.0 class KnownSymbol (n :: Symbol) -- | Since: 4.7.0.0 symbolVal :: KnownSymbol n => proxy n -> String -- | Symbol Proxy for ghc-7.6. data SProxy (a :: Symbol) SProxy :: SProxy -- | type sefe dictionaly. module Data.Apiary.Dict data Dict (ks :: [Elem]) -- | empty Dict. empty :: Dict [] -- | insert element. -- --
-- ghci> :t insert (SProxy :: SProxy "foo") (12 :: Int) empty -- insert (SProxy :: SProxy "foo") (12 :: Int) empty -- :: Dict '["foo" ':= Int] ---- --
-- ghci> :t insert (SProxy :: SProxy "bar") (0.5 :: Double) $ insert (SProxy :: SProxy "foo") (12 :: Int) empty -- insert (SProxy :: SProxy "bar") (0.5 :: Double) $ insert (SProxy :: SProxy "foo") (12 :: Int) empty -- :: Dict '["bar" ':= Double, "foo" ':= Int] ---- -- ghc raise compile error when insert duplicated key(> ghc-7.8 only). -- --
-- ghci> :t insert (SProxy :: SProxy "foo") (0.5 :: Double) $ insert (SProxy :: SProxy "foo") (12 :: Int) empty -- -- <interactive>:1:1: -- Couldn't match type ‘'True’ with ‘'False’ -- Expected type: 'False -- Actual type: Member' "foo" '["foo" ':= Int] -- In the expression: insert (SProxy :: SProxy "foo") (0.5 :: Double) -- In the expression: -- insert (SProxy :: SProxy "foo") (0.5 :: Double) -- $ insert (SProxy :: SProxy "foo") (12 :: Int) empty --insert :: NotMember k kvs => proxy k -> v -> Dict kvs -> Dict ((k := v) : kvs) class Member (k :: Symbol) (v :: *) (kvs :: [Elem]) | k kvs -> v get :: Member k v kvs => proxy k -> Dict kvs -> v -- | construct string literal proxy. -- --
-- [key|foo|] == (SProxy :: SProxy "foo") --key :: QuasiQuoter -- | (kind) Dict element. data Elem (:=) :: Symbol -> a -> Elem type NotMember k kvs = Member' k kvs ~ False -- | type family version Member for NotMember constraint. -- | type family to constraint multi kvs. -- --
-- Members ["foo" := Int, "bar" := Double] prms == (Member "foo" Int prms, Member "bar" Double prms) --instance [overlap ok] Member k v kvs => Member k v ((k' ':= v') : kvs) instance [overlap ok] Member k v ((k ':= v) : kvs) module Data.Apiary.Extension class Has a (as :: [*]) getExtension :: Has a as => proxy a -> Extensions as -> a class Extension a where extMiddleware _ = id extMiddleware :: Extension a => a -> Middleware data Extensions (es :: [*]) noExtension :: Monad m => Initializer m i i data Initializer m i o initializer :: (Extension e, Monad m) => (Extensions es -> m e) -> Initializer m es (e : es) type Initializer' m a = forall i. Initializer m i (a : i) initializer' :: (Extension e, Monad m) => m e -> Initializer' m e initializerBracket :: Extension e => (forall a. Extensions es -> (e -> m a) -> m a) -> Initializer m es (e : es) initializerBracket' :: Extension e => (forall a. (e -> m a) -> m a) -> Initializer m es (e : es) -- | combine two Initializer. since 0.16.0. (+>) :: Monad m => Initializer m i x -> Initializer m x o -> Initializer m i o module Data.Apiary.Method data Method GET :: Method POST :: Method HEAD :: Method PUT :: Method DELETE :: Method TRACE :: Method CONNECT :: Method OPTIONS :: Method PATCH :: Method NonStandard :: ByteString -> Method renderMethod :: Method -> ByteString dispatchMethod :: a -> a -> a -> a -> a -> a -> a -> a -> a -> (ByteString -> a) -> ByteString -> a parseMethod :: ByteString -> Method instance Eq Method instance Ord Method instance Read Method instance Show Method instance IsString Method instance Hashable Method module Data.Apiary.Param class Path a readPath :: Path a => Text -> Maybe a pathRep :: Path a => proxy a -> TypeRep -- | readPath providing type using Proxy. readPathAs :: Path a => proxy a -> Text -> Maybe a class Query a where queryRep = Strict . qTypeRep readQuery :: Query a => Maybe ByteString -> Maybe a queryRep :: Query a => proxy a -> QueryRep qTypeRep :: Query a => proxy a -> TypeRep data QueryRep -- | require value Strict :: TypeRep -> QueryRep -- | allow key only value Nullable :: TypeRep -> QueryRep -- | check existance Check :: QueryRep NoValue :: QueryRep data File File :: ByteString -> ByteString -> ByteString -> ByteString -> File fileParameter :: File -> ByteString fileName :: File -> ByteString fileContentType :: File -> ByteString fileContent :: File -> ByteString type Param = (ByteString, ByteString) class ReqParam a reqParams :: ReqParam a => proxy a -> Query -> [Param] -> [File] -> [(ByteString, Maybe a)] reqParamRep :: ReqParam a => proxy a -> QueryRep class Strategy (w :: * -> *) where type family SNext w (k :: Symbol) a (prms :: [Elem]) :: [Elem] strategy :: (Strategy w, NotMember k prms, MonadPlus m) => w a -> proxy' k -> [Maybe a] -> Dict prms -> m (Dict (SNext w k a prms)) strategyRep :: Strategy w => w a -> StrategyRep newtype StrategyRep StrategyRep :: Text -> StrategyRep strategyInfo :: StrategyRep -> Text data First a First :: First a data One a One :: One a data Many a Many :: Many a data Some a Some :: Some a data Option a Option :: Option a data Optional a Optional :: Text -> a -> Optional a pBool :: Proxy Bool pInt :: Proxy Int pWord :: Proxy Word pDouble :: Proxy Double pText :: Proxy Text pLazyText :: Proxy Text pByteString :: Proxy ByteString pLazyByteString :: Proxy ByteString pString :: Proxy String pMaybe :: proxy a -> Proxy (Maybe a) pFile :: Proxy File pFirst :: proxy a -> First a pOne :: proxy a -> One a pMany :: proxy a -> Many a pSome :: proxy a -> Some a pOption :: proxy a -> Option a pOptional :: Show a => a -> Optional a instance [overlap ok] Typeable Text instance [overlap ok] Typeable File instance [overlap ok] Show File instance [overlap ok] Eq File instance [overlap ok] Show QueryRep instance [overlap ok] Eq QueryRep instance [overlap ok] Show StrategyRep instance [overlap ok] Eq StrategyRep instance [overlap ok] Strategy Optional instance [overlap ok] Strategy Option instance [overlap ok] Strategy Some instance [overlap ok] Strategy Many instance [overlap ok] Strategy One instance [overlap ok] Strategy First instance [overlap ok] Query a => ReqParam a instance [overlap ok] ReqParam File instance [overlap ok] Query () instance [overlap ok] Query a => Query (Maybe a) instance [overlap ok] Path Day instance [overlap ok] Query Day instance [overlap ok] Query String instance [overlap ok] Query ByteString instance [overlap ok] Query ByteString instance [overlap ok] Query Text instance [overlap ok] Query Text instance [overlap ok] Query Float instance [overlap ok] Query Double instance [overlap ok] Query Word64 instance [overlap ok] Query Word32 instance [overlap ok] Query Word16 instance [overlap ok] Query Word8 instance [overlap ok] Query Word instance [overlap ok] Query Integer instance [overlap ok] Query Int64 instance [overlap ok] Query Int32 instance [overlap ok] Query Int16 instance [overlap ok] Query Int8 instance [overlap ok] Query Int instance [overlap ok] Query Bool instance [overlap ok] Path String instance [overlap ok] Path ByteString instance [overlap ok] Path ByteString instance [overlap ok] Path Text instance [overlap ok] Path Text instance [overlap ok] Path Float instance [overlap ok] Path Double instance [overlap ok] Path Word64 instance [overlap ok] Path Word32 instance [overlap ok] Path Word16 instance [overlap ok] Path Word8 instance [overlap ok] Path Word instance [overlap ok] Path Integer instance [overlap ok] Path Int64 instance [overlap ok] Path Int32 instance [overlap ok] Path Int16 instance [overlap ok] Path Int8 instance [overlap ok] Path Int instance [overlap ok] Path Bool instance [overlap ok] Path Char module Data.Apiary.Document data Documents Documents :: [PathDoc] -> [(Text, [PathDoc])] -> Documents noGroup :: Documents -> [PathDoc] groups :: Documents -> [(Text, [PathDoc])] data Route Path :: Text -> Route -> Route Fetch :: Text -> TypeRep -> (Maybe Html) -> Route -> Route -- | ** with name Rest :: Text -> (Maybe Html) -> Route -- | ** without name Any :: Route End :: Route data PathDoc PathDoc :: Route -> [(Method, [MethodDoc])] -> PathDoc path :: PathDoc -> Route methods :: PathDoc -> [(Method, [MethodDoc])] data MethodDoc MethodDoc :: [QueryDoc] -> [Html] -> Maybe ByteString -> Text -> MethodDoc queries :: MethodDoc -> [QueryDoc] preconditions :: MethodDoc -> [Html] accept :: MethodDoc -> Maybe ByteString document :: MethodDoc -> Text -- | query parameters document data QueryDoc QueryDoc :: Text -> StrategyRep -> QueryRep -> (Maybe Html) -> QueryDoc queryName :: QueryDoc -> Text queryStrategy :: QueryDoc -> StrategyRep queryRep :: QueryDoc -> QueryRep queryDocument :: QueryDoc -> (Maybe Html) module Data.Apiary.Document.Html defaultDocumentToHtml :: DefaultDocumentConfig -> Documents -> Html data DefaultDocumentConfig DefaultDocumentConfig :: Text -> Maybe Html -> Bool -> Maybe Text -> DefaultDocumentConfig documentTitle :: DefaultDocumentConfig -> Text documentDescription :: DefaultDocumentConfig -> Maybe Html documentUseCDN :: DefaultDocumentConfig -> Bool -- | google analytics. since 0.17.0. documentGoogleAnalytics :: DefaultDocumentConfig -> Maybe Text -- | construct Html as route parameter. since 0.13.0. rpHtml :: Html -> Html instance Default DefaultDocumentConfig module Control.Monad.Apiary.Action data ActionT exts prms m a -- | stop handler and send current state. since 0.3.3.0. stop :: Monad m => ActionT exts prms m a -- | get parameter. since 1.0.0. -- -- example: -- --
-- param [key|foo|] --param :: (Member k v prms, Monad m) => proxy k -> ActionT exts prms m v -- | get parameters. since 1.0.0. -- --
-- [params|foo,bar|] == do { a <- param [key|foo|]; b <- param [key|bar|]; return (a, b) }
--
params :: QuasiQuoter
-- | set status code. since 0.1.0.0.
status :: Monad m => Status -> ActionT exts prms m ()
-- | add response header. since 0.1.0.0.
--
-- Don't set Content-Type using this function. Use contentType.
addHeader :: Monad m => HeaderName -> ByteString -> ActionT exts prms m ()
-- | set response headers. since 0.1.0.0.
--
-- Don't set Content-Type using this function. Use contentType.
setHeaders :: Monad m => ResponseHeaders -> ActionT exts prms m ()
-- | modify response header. since 0.1.0.0.
--
-- Don't set Content-Type using this function. Use contentType.
modifyHeader :: Monad m => (ResponseHeaders -> ResponseHeaders) -> ActionT exts prms m ()
-- | set content-type header.
--
-- if content-type header already exists, replace it. since 0.1.0.0.
contentType :: Monad m => ContentType -> ActionT exts prms m ()
-- | reset response body to no response. since v0.15.2.
reset :: Monad m => ActionT exts prms m ()
-- | append response body from builder. since 0.1.0.0.
builder :: Monad m => Builder -> ActionT exts prms m ()
-- | append response body from strict bytestring. since 0.15.2.
bytes :: Monad m => ByteString -> ActionT exts prms m ()
-- | append response body from lazy bytestring. since 0.15.2.
lazyBytes :: Monad m => ByteString -> ActionT exts prms m ()
-- | append response body from strict text. encoding UTF-8. since 0.15.2.
text :: Monad m => Text -> ActionT exts prms m ()
-- | append response body from lazy text. encoding UTF-8. since 0.15.2.
lazyText :: Monad m => Text -> ActionT exts prms m ()
-- | append response body from show. encoding UTF-8. since 0.15.2.
showing :: (Monad m, Show a) => a -> ActionT exts prms m ()
-- | append response body from string. encoding UTF-8. since 0.15.2.
string :: Monad m => String -> ActionT exts prms m ()
-- | append response body from char. encoding UTF-8. since 0.15.2.
char :: Monad m => Char -> ActionT exts prms m ()
-- | set response body file content and detect Content-Type by extension.
-- since 0.1.0.0.
--
-- file modification check since 0.17.2.
file :: MonadIO m => FilePath -> Maybe FilePart -> ActionT exts prms m ()
-- | redirect with:
--
-- 303 See Other (HTTP/1.1) or 302 Moved Temporarily (Other)
--
-- since 0.6.2.0.
redirect :: Monad m => ByteString -> ActionT exts prms m ()
-- | redirect with 301 Moved Permanently. since 0.3.3.0.
redirectPermanently :: Monad m => ByteString -> ActionT exts prms m ()
-- | redirect with:
--
-- 307 Temporary Redirect (HTTP/1.1) or 302 Moved Temporarily (Other)
--
-- since 0.3.3.0.
redirectTemporary :: Monad m => ByteString -> ActionT exts prms m ()
-- | auto generated document.
defaultDocumentationAction :: Monad m => DefaultDocumentConfig -> ActionT exts prms m ()
data DefaultDocumentConfig
DefaultDocumentConfig :: Text -> Maybe Html -> Bool -> Maybe Text -> DefaultDocumentConfig
documentTitle :: DefaultDocumentConfig -> Text
documentDescription :: DefaultDocumentConfig -> Maybe Html
documentUseCDN :: DefaultDocumentConfig -> Bool
-- | google analytics. since 0.17.0.
documentGoogleAnalytics :: DefaultDocumentConfig -> Maybe Text
type ContentType = ByteString
-- | stop with response. since 0.4.2.0.
stopWith :: Monad m => Response -> ActionT exts prms m a
-- | get raw request. since 0.1.0.0.
getRequest :: Monad m => ActionT exts prms m Request
-- | get all request headers. since 0.6.0.0.
getHeaders :: Monad m => ActionT exts prms m RequestHeaders
getParams :: Monad m => ActionT exts prms m (Dict prms)
-- | get extension.
getExt :: (Has e exts, Monad m) => proxy e -> ActionT exts prms m e
getQueryParams :: Monad m => ActionT exts prms m Query
-- | parse request body and return params. since 1.0.0.
getReqBodyParams :: MonadIO m => ActionT exts prms m [Param]
-- | parse request body and return files. since 0.9.0.0.
getReqBodyFiles :: MonadIO m => ActionT exts prms m [File]
-- | set response body file content, without set Content-Type. since
-- 0.1.0.0.
file' :: MonadIO m => FilePath -> Maybe FilePart -> ActionT exts prms m ()
-- | set response body source. since 0.9.0.0.
stream :: Monad m => StreamingBody -> ActionT exts prms m ()
-- | set raw response constructor. since 0.10.
--
-- example(use pipes-wai)
--
-- -- producer :: Monad m => Producer (Flush Builder) IO () -> ActionT' exts m () -- producer = response (s h -> responseProducer s h) --rawResponse :: Monad m => (Status -> ResponseHeaders -> Response) -> ActionT exts prms m () -- | Represents a streaming HTTP response body. It's a function of two -- parameters; the first parameter provides a means of sending another -- chunk of data, and the second parameter provides a means of flushing -- the data to the client. -- -- Since 3.0.0 type StreamingBody = (Builder -> IO ()) -> IO () -> IO () -- | redirect handler -- -- set status and add location header. since 0.3.3.0. -- -- rename from redirect in 0.6.2.0. redirectWith :: Monad m => Status -> ByteString -> ActionT exts prms m () module Control.Monad.Apiary.Filter -- | filter by HTTP method. since 0.1.0.0. -- --
-- method GET -- stdmethod -- method "HOGE" -- non standard method --method :: Monad actM => Method -> ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | http/0.9 only accepted fiter. since 0.5.0.0. http09 :: Monad actM => ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | http/1.0 only accepted fiter. since 0.5.0.0. http10 :: Monad actM => ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | http/1.1 only accepted fiter. since 0.5.0.0. http11 :: Monad actM => ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | filter by rootPattern of ApiaryConfig. root :: (Monad m, Monad actM) => ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | capture QuasiQuoter. since 0.1.0.0. -- -- example: -- --
-- [capture|/path|] -- first path == "path" -- [capture|/int/foo::Int|] -- first path == "int" && get 2nd path as Int. -- [capture|/bar::Int/baz::Double|] -- get first path as Int and get 2nd path as Double. -- [capture|/**baz|] -- feed greedy and get all path as [Text] (since 0.17.0). ---- -- this QQ can convert pure function easily. -- --
-- [capture|foofoo::Int|] == path "path" . fetch (Proxy :: Proxy ("foo" := Int)) . endPath
-- [capture|barbar::Int/**rest|] == path "path" . fetch (Proxy :: Proxy ("foo" := Int)) . restPath (Proxy :: Proxy "rest")
--
capture :: QuasiQuoter
-- | add document to query parameter filter.
--
-- -- [key|key|] ?? "document" =: pInt --(??) :: proxy key -> Html -> QueryKey key -- | get first matched paramerer. since 0.5.0.0. -- --
-- [key|key|] =: pInt --(=:) :: (HasDesc query, MonadIO actM, ReqParam v, KnownSymbol k, NotMember k prms) => query k -> proxy v -> ApiaryT exts ((k := v) : prms) actM m () -> ApiaryT exts prms actM m () -- | get one matched paramerer. since 0.5.0.0. -- -- when more one parameger given, not matched. -- --
-- [key|key|] =!: pInt --(=!:) :: (HasDesc query, MonadIO actM, ReqParam v, KnownSymbol k, NotMember k prms) => query k -> proxy v -> ApiaryT exts ((k := v) : prms) actM m () -> ApiaryT exts prms actM m () -- | get optional first paramerer. since 0.5.0.0. -- -- when illegal type parameter given, fail match(don't give Nothing). -- --
-- [key|key|] =?: pInt --(=?:) :: (HasDesc query, MonadIO actM, ReqParam v, KnownSymbol k, NotMember k prms) => query k -> proxy v -> ApiaryT exts ((k := Maybe v) : prms) actM m () -> ApiaryT exts prms actM m () -- | get optional first paramerer with default. since 0.16.0. -- -- when illegal type parameter given, fail match(don't give Nothing). -- --
-- [key|key|] =!?: (0 :: Int) --(=?!:) :: (HasDesc query, MonadIO actM, Show v, ReqParam v, KnownSymbol k, NotMember k prms) => query k -> v -> ApiaryT exts ((k := v) : prms) actM m () -> ApiaryT exts prms actM m () -- | get many paramerer. since 0.5.0.0. -- --
-- [key|key|] =*: pInt --(=*:) :: (HasDesc query, MonadIO actM, ReqParam v, KnownSymbol k, NotMember k prms) => query k -> proxy v -> ApiaryT exts ((k := [v]) : prms) actM m () -> ApiaryT exts prms actM m () -- | get some paramerer. since 0.5.0.0. -- --
-- [key|key|] =+: pInt --(=+:) :: (HasDesc query, MonadIO actM, ReqParam v, KnownSymbol k, NotMember k prms) => query k -> proxy v -> ApiaryT exts ((k := [v]) : prms) actM m () -> ApiaryT exts prms actM m () -- | get existance of key only query parameter. since v0.17.0. switchQuery :: (HasDesc proxy, MonadIO actM, KnownSymbol k, NotMember k prms) => proxy k -> ApiaryT exts ((k := Bool) : prms) actM m () -> ApiaryT exts prms actM m () -- | check whether to exists specified valued header or not. since 0.6.0.0. eqHeader :: (KnownSymbol k, Monad actM) => proxy k -> ByteString -> ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | filter by header and get first. since 0.6.0.0. header :: (KnownSymbol k, Monad actM, NotMember k prms) => proxy k -> ApiaryT exts ((k := ByteString) : prms) actM m () -> ApiaryT exts prms actM m () -- | require Accept header and set response Content-Type. since 0.16.0. accept :: Monad actM => ContentType -> ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | filter by ssl accessed. since 0.1.0.0. ssl :: Monad actM => ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () class HasDesc (a :: Symbol -> *) queryDesc :: HasDesc a => a key -> Maybe Html newtype QueryKey (key :: Symbol) QueryKey :: Maybe Html -> QueryKey queryKeyDesc :: QueryKey -> Maybe Html query :: (NotMember k prms, MonadIO actM, KnownSymbol k, ReqParam v, HasDesc query, Strategy strategy) => query k -> strategy v -> ApiaryT exts (SNext strategy k v prms) actM m () -> ApiaryT exts prms actM m () -- | http version filter. since 0.5.0.0. httpVersion :: Monad actM => HttpVersion -> Html -> ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | check first path and drill down. since 0.11.0. path :: Monad actM => Text -> ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | check consumed paths. since 0.11.1. endPath :: Monad actM => ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () fetch :: (NotMember k prms, KnownSymbol k, Path p, Monad actM) => proxy (k := p) -> Maybe Html -> ApiaryT exts ((k := p) : prms) actM m () -> ApiaryT exts prms actM m () restPath :: (NotMember k prms, KnownSymbol k, Monad m, Monad actM) => proxy k -> Maybe Html -> ApiaryT exts ((k := [Text]) : prms) actM m () -> ApiaryT exts prms actM m () anyPath :: (Monad m, Monad actM) => ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | low level filter function. function :: Monad actM => (Doc -> Doc) -> (Dict prms -> Request -> Maybe (Dict prms')) -> ApiaryT exts prms' actM m () -> ApiaryT exts prms actM m () -- | filter and append argument. function' :: (Monad actM, NotMember key prms) => (Doc -> Doc) -> (Request -> Maybe (proxy key, prm)) -> ApiaryT exts ((key := prm) : prms) actM m () -> ApiaryT exts prms actM m () -- | filter only(not modify arguments). function_ :: Monad actM => (Doc -> Doc) -> (Request -> Bool) -> ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | filter by action. since 0.6.1.0. focus :: Monad actM => (Doc -> Doc) -> ActionT exts prms actM (Dict prms') -> ApiaryT exts prms' actM m () -> ApiaryT exts prms actM m () data Doc DocPath :: Text -> Doc -> Doc DocRoot :: Doc -> Doc DocFetch :: Text -> TypeRep -> (Maybe Html) -> Doc -> Doc DocRest :: Text -> (Maybe Html) -> Doc -> Doc DocAny :: Doc -> Doc DocDropNext :: Doc -> Doc DocMethod :: Method -> Doc -> Doc DocQuery :: Text -> StrategyRep -> QueryRep -> (Maybe Html) -> Doc -> Doc DocPrecondition :: Html -> Doc -> Doc DocAccept :: ByteString -> Doc -> Doc DocGroup :: Text -> Doc -> Doc Document :: Text -> Doc -> Doc Action :: Doc instance HasDesc SProxy instance HasDesc Proxy instance HasDesc QueryKey module Control.Monad.Apiary -- | Apiary monad. since 0.8.0.0. data ApiaryT exts prms actM m a -- | run Apiary monad. runApiaryTWith :: (Monad actM, Monad m) => (forall b. actM b -> IO b) -> (Application -> m a) -> Initializer m [] exts -> ApiaryConfig -> ApiaryT exts [] actM m () -> m a runApiaryWith :: Monad m => (Application -> m a) -> Initializer m [] exts -> ApiaryConfig -> ApiaryT exts [] IO m () -> m a runApiary :: Monad m => (Application -> m a) -> ApiaryConfig -> ApiaryT [] [] IO m () -> m a data ApiaryConfig ApiaryConfig :: Application -> Status -> ResponseHeaders -> ByteString -> Status -> ResponseHeaders -> [Text] -> (FilePath -> ByteString) -> ApiaryConfig -- | call when no handler matched. notFound :: ApiaryConfig -> Application -- | used unless call status function. defaultStatus :: ApiaryConfig -> Status -- | initial headers. defaultHeaders :: ApiaryConfig -> ResponseHeaders defaultContentType :: ApiaryConfig -> ByteString failStatus :: ApiaryConfig -> Status failHeaders :: ApiaryConfig -> ResponseHeaders -- | used by root filter. rootPattern :: ApiaryConfig -> [Text] mimeType :: ApiaryConfig -> FilePath -> ByteString -- | splice ActionT to ApiaryT. action :: Monad actM => ActionT exts prms actM () -> ApiaryT exts prms actM m () -- | add middleware. middleware :: Monad actM => Middleware -> ApiaryT exts prms actM m () -- | API document group. since 0.12.0.0. -- -- only top level group recognized. group :: Text -> ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | add API document. since 0.12.0.0. -- -- It use only filters prior document, so you should be placed document -- directly in front of action. document :: Text -> ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | add user defined precondition. since 0.13.0. precondition :: Html -> ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | ignore next document. noDoc :: ApiaryT exts prms actM m () -> ApiaryT exts prms actM m () -- | get Apiary configuration. apiaryConfig :: Monad actM => ApiaryT exts prms actM m ApiaryConfig -- | get Apiary extension. apiaryExt :: (Has e exts, Monad actM) => proxy e -> ApiaryT exts prms actM m e module Web.Apiary module Web.Apiary.Heroku data Heroku data HerokuConfig HerokuConfig :: Int -> String -> Maybe String -> ApiaryConfig -> HerokuConfig defaultPort :: HerokuConfig -> Int herokuExecutableName :: HerokuConfig -> String herokuAppName :: HerokuConfig -> Maybe String herokuApiaryConfig :: HerokuConfig -> ApiaryConfig -- | use this function instead of runApiary in heroku app. since 0.18.0. -- -- this function provide: -- --
-- runApiaryTWith id (run 3000) exts def $ foo ---- -- to -- --
-- runHerokuTWith id run exts def $ foo --runHerokuTWith :: (MonadIO m, Monad actM) => (forall b. actM b -> IO b) -> (Int -> Application -> m a) -> Initializer m '[Heroku] exts -> HerokuConfig -> ApiaryT exts [] actM m () -> m a getHerokuEnv :: Has Heroku exts => Text -> Extensions exts -> IO (Maybe Text) getHerokuEnv' :: Text -> Heroku -> IO (Maybe Text) instance Default HerokuConfig instance Extension Heroku