-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simple web framework inspired by scotty. -- -- Simple web framework inspired by scotty. -- --
--   {-# LANGUAGE QuasiQuotes #-}
--   {-# LANGUAGE OverloadedStrings #-}
--   
--   import Web.Apiary
--   import Network.Wai.Handler.Warp
--   import qualified Data.ByteString.Lazy.Char8 as L
--   
--   main :: IO ()
--   main = run 3000 . runApiary def $ do
--     [capture|/:Int|] . queryFirst' "name" . stdMethod GET . action $ \age name -> do
--         guard (age >= 18)
--         contentType "text/html"
--         lbs . L.concat $ ["<h1>Hello, ", L.fromStrict name, "!</h1>"]
--   
-- -- -- -- full example & tutorial: -- https://github.com/philopon/apiary/blob/master/examples/main.lhs @package apiary @version 0.4.3.2 module Data.Apiary.Param class Param a readParam :: Param a => Text -> Maybe a instance Param String instance Param Text instance Param Text instance Param Float instance Param Double instance Param Word64 instance Param Word32 instance Param Word16 instance Param Word8 instance Param Word instance Param Integer instance Param Int64 instance Param Int32 instance Param Int16 instance Param Int8 instance Param Int instance Param Char module Data.Apiary.SList data SList (as :: [*]) SNil :: SList '[] (:::) :: a -> SList xs -> SList (a : xs) apply :: Fn xs r -> SList xs -> r sSnoc :: SList as -> a -> SList (Snoc as a) type Reverse (a :: [*]) = Rev a '[] sReverse :: SList as -> SList (Reverse as) instance (All Show as) => Show (SList as) module Control.Monad.Apiary.Filter method :: Monad m => Method -> ApiaryT c m a -> ApiaryT c m a stdMethod :: Monad m => StdMethod -> ApiaryT c m a -> ApiaryT c m a -- | filter by rootPattern of ApiaryConfig. root :: Monad m => ApiaryT c m b -> ApiaryT c m b ssl :: Monad m => ApiaryT c m a -> ApiaryT c m a -- | get [0,) parameters by query parameter allows empty value. since -- 0.4.3.0. queryMany :: Monad m => ByteString -> ApiaryT (Snoc as [Maybe ByteString]) m b -> ApiaryT as m b -- | get [0,) parameters by query parameter not allows empty value. since -- 0.4.3.0. queryMany' :: Monad m => ByteString -> ApiaryT (Snoc as [ByteString]) m b -> ApiaryT as m b -- | get first query parameter allow empty value. since 0.4.3.0, maybeQueryFirst :: Monad m => ByteString -> ApiaryT (Snoc as (Maybe (Maybe ByteString))) m b -> ApiaryT as m b -- | get first query parameter not allow empty value. since 0.4.3.0, maybeQueryFirst' :: Monad m => ByteString -> ApiaryT (Snoc as (Maybe ByteString)) m b -> ApiaryT as m b -- | filter [1,) parameters by query parameter allows empty value. since -- 0.4.3.0. querySome :: Monad m => ByteString -> ApiaryT (Snoc as [Maybe ByteString]) m b -> ApiaryT as m b -- | filter [1,) parameters by query parameter not allows empty value. -- since 0.4.3.0. querySome' :: Monad m => ByteString -> ApiaryT (Snoc as [ByteString]) m b -> ApiaryT as m b -- | filter by query parameter. allow empty value. since 0.4.0.0. queryFirst :: Monad m => ByteString -> ApiaryT (Snoc as (Maybe ByteString)) m b -> ApiaryT as m b -- | filter by query parameter. not allow empty value. since 0.4.0.0. queryFirst' :: Monad m => ByteString -> ApiaryT (Snoc as ByteString) m b -> ApiaryT as m b -- | raw and most generic filter function. function :: Monad m => (SList c -> Request -> Maybe (SList c')) -> ApiaryT c' m b -> ApiaryT c m b -- | filter and append argument. function' :: Monad m => (Request -> Maybe a) -> ApiaryT (Snoc as a) m b -> ApiaryT as m b -- | Deprecated: use query* function. hasQuery :: Monad m => ByteString -> ApiaryT c m a -> ApiaryT c m a -- | filter by query parameter. since 0.4.0.0. -- | Deprecated: use querySome queryAll :: Monad m => ByteString -> ApiaryT (Snoc as [Maybe ByteString]) m b -> ApiaryT as m b -- | filter by query parameter. since 0.4.0.0. -- | Deprecated: use querySome' queryAll' :: Monad m => ByteString -> ApiaryT (Snoc as [ByteString]) m b -> ApiaryT as m b module Control.Monad.Apiary.Action data ActionT m a data ApiaryConfig ApiaryConfig :: Application -> Status -> ResponseHeaders -> [ByteString] -> (FilePath -> ByteString) -> ApiaryConfig -- | call when no handler matched. notFound :: ApiaryConfig -> Application -- | used unless call status function. defaultStatus :: ApiaryConfig -> Status -- | initial headers. defaultHeader :: ApiaryConfig -> ResponseHeaders -- | used by root filter. rootPattern :: ApiaryConfig -> [ByteString] mimeType :: ApiaryConfig -> FilePath -> ByteString -- | stop handler and send current state. since 0.3.3.0. stop :: Monad m => ActionT m a -- | stop with response. since 0.4.2.0. stopWith :: Monad m => Response -> ActionT m a getRequest :: Monad m => ActionT m Request getQuery :: Monad m => ByteString -> ActionT m (Maybe (Maybe ByteString)) -- | when query parameter is not found, mzero(pass next handler). getQuery' :: Monad m => ByteString -> ActionT m (Maybe ByteString) getRequestHeader :: Monad m => HeaderName -> ActionT m (Maybe ByteString) -- | when request header is not found, mzero(pass next handler). getRequestHeader' :: Monad m => HeaderName -> ActionT m ByteString status :: Monad m => Status -> ActionT m () addHeader :: Monad m => HeaderName -> ByteString -> ActionT m () setHeaders :: Monad m => ResponseHeaders -> ActionT m () modifyHeader :: Monad m => (ResponseHeaders -> ResponseHeaders) -> ActionT m () contentType :: Monad m => ByteString -> ActionT m () -- | set body to file content and detect Content-Type by extension. file :: Monad m => FilePath -> Maybe FilePart -> ActionT m () file' :: Monad m => FilePath -> Maybe FilePart -> ActionT m () builder :: Monad m => Builder -> ActionT m () lbs :: Monad m => ByteString -> ActionT m () source :: Monad m => Source IO (Flush Builder) -> ActionT m () -- | redirect handler -- -- set status, location header and stop. since 0.3.3.0. redirect :: Monad m => Status -> ByteString -> ActionT m a -- | redirect with 301 Moved Permanently. since 0.3.3.0. redirectPermanently :: Monad m => ByteString -> ActionT m a -- | redirect with 302 Found. since 0.3.3.0. redirectFound :: Monad m => ByteString -> ActionT m a -- | redirect with 303 See Other. since 0.3.3.0. redirectSeeOther :: Monad m => ByteString -> ActionT m a -- | redirect with 307 Temporary Redirect. since 0.3.3.0. redirectTemporary :: Monad m => ByteString -> ActionT m a module Control.Monad.Apiary data ApiaryT c m a type Apiary c = ApiaryT c IO runApiary :: ApiaryConfig -> Apiary '[] a -> Application runApiaryT :: Monad m => ApiaryConfig -> (forall x. m x -> IO x) -> ApiaryT '[] m a -> Application apiaryConfig :: ApiaryT c m ApiaryConfig action :: Monad m => Fn c (ActionT m ()) -> ApiaryT c m () -- | Deprecated: use action method. action_ :: Monad m => ActionT m () -> ApiaryT c m () -- | execute action before main action. since v0.4.2.0 actionWithPreAction :: Monad m => (SList xs -> ActionT IO a) -> Fn xs (ActionT m ()) -> ApiaryT xs m () module Control.Monad.Apiary.Filter.Capture data Equal Equal :: Text -> Equal data Fetch a Fetch :: Fetch a class CaptureElem a where type family Next a (xs :: [*]) :: [*] captureElem :: CaptureElem a => a -> Text -> SList xs -> Maybe (SList (Next a xs)) type Capture as = All CaptureElem as capture' :: Capture as => SList as -> [Text] -> SList xs -> Maybe (SList (CaptureResult xs as)) -- | low level (without Template Haskell) capture. since 0.4.2.0 -- --
--    myCapture :: SList '[Equal, Fetch Int, Fetch String]
--    myCapture = Equal path ::: (Fetch :: Fetch Int) ::: (Fetch :: Fetch String) ::: SNil
--   
--   capture myCapture . stdMethod GET . action $ age name -> do
--        yourAction
--   
capture :: (Capture as, Monad m) => SList as -> ApiaryT (CaptureResult xs as) m b -> ApiaryT xs m b instance Param a => CaptureElem (Fetch a) instance CaptureElem Equal module Web.Apiary.TH capture :: QuasiQuoter module Web.Apiary