apiary 0.11.0 → 0.11.1
raw patch · 7 files changed
+30/−19 lines, 7 filesdep +aesonPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: aeson
API changes (from Hackage documentation)
+ Control.Monad.Apiary.Filter: endPath :: (Functor n, Monad n) => ApiaryT c n m a -> ApiaryT c n m a
- Control.Monad.Apiary.Filter: (=!:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> Proxy a -> ApiaryT (Snoc as a) n m b -> ApiaryT as n m b
+ Control.Monad.Apiary.Filter: (=!:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> proxy a -> ApiaryT (Snoc as a) n m b -> ApiaryT as n m b
- Control.Monad.Apiary.Filter: (=*:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> Proxy a -> ApiaryT (Snoc as [a]) n m b -> ApiaryT as n m b
+ Control.Monad.Apiary.Filter: (=*:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> proxy a -> ApiaryT (Snoc as [a]) n m b -> ApiaryT as n m b
- Control.Monad.Apiary.Filter: (=+:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> Proxy a -> ApiaryT (Snoc as [a]) n m b -> ApiaryT as n m b
+ Control.Monad.Apiary.Filter: (=+:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> proxy a -> ApiaryT (Snoc as [a]) n m b -> ApiaryT as n m b
- Control.Monad.Apiary.Filter: (=:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> Proxy a -> ApiaryT (Snoc as a) n m b -> ApiaryT as n m b
+ Control.Monad.Apiary.Filter: (=:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> proxy a -> ApiaryT (Snoc as a) n m b -> ApiaryT as n m b
- Control.Monad.Apiary.Filter: (=?:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> Proxy a -> ApiaryT (Snoc as (Maybe a)) n m b -> ApiaryT as n m b
+ Control.Monad.Apiary.Filter: (=?:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> proxy a -> ApiaryT (Snoc as (Maybe a)) n m b -> ApiaryT as n m b
- Control.Monad.Apiary.Filter: (?:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> Proxy a -> ApiaryT as n m b -> ApiaryT as n m b
+ Control.Monad.Apiary.Filter: (?:) :: (Functor n, MonadIO n, ReqParam a) => ByteString -> proxy a -> ApiaryT as n m b -> ApiaryT as n m b
- Control.Monad.Apiary.Filter: query :: (ReqParam a, Strategy w, Functor n, MonadIO n) => ByteString -> Proxy (w a) -> ApiaryT (SNext w as a) n m b -> ApiaryT as n m b
+ Control.Monad.Apiary.Filter: query :: (ReqParam a, Strategy w, Functor n, MonadIO n) => ByteString -> proxy (w a) -> ApiaryT (SNext w as a) n m b -> ApiaryT as n m b
- Control.Monad.Apiary.Filter.Internal.Strategy: pCheck :: Proxy a -> Proxy (Check a)
+ Control.Monad.Apiary.Filter.Internal.Strategy: pCheck :: proxy a -> Proxy (Check a)
- Control.Monad.Apiary.Filter.Internal.Strategy: pFirst :: Proxy a -> Proxy (First a)
+ Control.Monad.Apiary.Filter.Internal.Strategy: pFirst :: proxy a -> Proxy (First a)
- Control.Monad.Apiary.Filter.Internal.Strategy: pMany :: Proxy a -> Proxy (Many a)
+ Control.Monad.Apiary.Filter.Internal.Strategy: pMany :: proxy a -> Proxy (Many a)
- Control.Monad.Apiary.Filter.Internal.Strategy: pOne :: Proxy a -> Proxy (One a)
+ Control.Monad.Apiary.Filter.Internal.Strategy: pOne :: proxy a -> Proxy (One a)
- Control.Monad.Apiary.Filter.Internal.Strategy: pOption :: Proxy a -> Proxy (Option a)
+ Control.Monad.Apiary.Filter.Internal.Strategy: pOption :: proxy a -> Proxy (Option a)
- Control.Monad.Apiary.Filter.Internal.Strategy: pSome :: Proxy a -> Proxy (Some a)
+ Control.Monad.Apiary.Filter.Internal.Strategy: pSome :: proxy a -> Proxy (Some a)
- Data.Apiary.Param: pMaybe :: Proxy a -> Proxy (Maybe a)
+ Data.Apiary.Param: pMaybe :: proxy a -> Proxy (Maybe a)
Files
- apiary.cabal +2/−1
- src/Control/Monad/Apiary/Filter.hs +9/−8
- src/Control/Monad/Apiary/Filter/Internal/Capture.hs +9/−1
- src/Control/Monad/Apiary/Filter/Internal/Capture/TH.hs +1/−1
- src/Control/Monad/Apiary/Filter/Internal/Strategy.hs +6/−6
- src/Data/Apiary/Param.hs +1/−1
- test/main.hs +2/−1
apiary.cabal view
@@ -1,5 +1,5 @@ name: apiary-version: 0.11.0+version: 0.11.1 synopsis: Simple web framework inspired by scotty. description: Simple web framework inspired by scotty.@@ -95,6 +95,7 @@ , http-types >=0.8 && <0.9 , mime-types >=0.1 && <0.2 , exceptions >=0.6 && <0.7+ , aeson >=0.7 && <0.8 if impl(ghc < 7.8) build-depends: tagged >=0.7 && <0.8
src/Control/Monad/Apiary/Filter.hs view
@@ -18,6 +18,7 @@ , root , capture , Capture.path+ , Capture.endPath , Capture.fetch -- ** query matcher@@ -112,10 +113,10 @@ -- query "key" (Proxy :: Proxy ('Option' (Maybe Int)) -- get first \'key\' query parameter as Int. allow without param or value. -- query "key" (Proxy :: Proxy ('Many' String) -- get all \'key\' query parameter as String. -- @-query :: forall a as w n m b. +query :: forall a as w n m b proxy. (ReqParam a, Strategy.Strategy w, Functor n, MonadIO n) => S.ByteString- -> Proxy (w a)+ -> proxy (w a) -> ApiaryT (Strategy.SNext w as a) n m b -> ApiaryT as n m b query key p = focus $ \l -> do@@ -131,7 +132,7 @@ -- @ -- "key" =: pInt == query "key" (pFirst pInt) == query "key" (Proxy :: Proxy (First Int)) -- @-(=:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> Proxy a +(=:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> proxy a -> ApiaryT (Snoc as a) n m b -> ApiaryT as n m b k =: t = query k (pFirst t) @@ -142,7 +143,7 @@ -- @ -- "key" =: pInt == query "key" (pOne pInt) == query "key" (Proxy :: Proxy (One Int)) -- @-(=!:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> Proxy a +(=!:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> proxy a -> ApiaryT (Snoc as a) n m b -> ApiaryT as n m b k =!: t = query k (pOne t) @@ -153,7 +154,7 @@ -- @ -- "key" =: pInt == query "key" (pOption pInt) == query "key" (Proxy :: Proxy (Option Int)) -- @-(=?:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> Proxy a +(=?:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> proxy a -> ApiaryT (Snoc as (Maybe a)) n m b -> ApiaryT as n m b k =?: t = query k (pOption t) @@ -164,7 +165,7 @@ -- @ -- "key" =: pInt == query "key" (pCheck pInt) == query "key" (Proxy :: Proxy (Check Int)) -- @-(?:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> Proxy a +(?:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> proxy a -> ApiaryT as n m b -> ApiaryT as n m b k ?: t = query k (pCheck t) @@ -173,7 +174,7 @@ -- @ -- "key" =: pInt == query "key" (pMany pInt) == query "key" (Proxy :: Proxy (Many Int)) -- @-(=*:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> Proxy a +(=*:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> proxy a -> ApiaryT (Snoc as [a]) n m b -> ApiaryT as n m b k =*: t = query k (pMany t) @@ -182,7 +183,7 @@ -- @ -- "key" =: pInt == query "key" (pSome pInt) == query "key" (Proxy :: Proxy (Some Int)) -- @-(=+:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> Proxy a +(=+:) :: (Functor n, MonadIO n, ReqParam a) => S.ByteString -> proxy a -> ApiaryT (Snoc as [a]) n m b -> ApiaryT as n m b k =+: t = query k (pSome t)
src/Control/Monad/Apiary/Filter/Internal/Capture.hs view
@@ -26,11 +26,19 @@ -- | check first path and drill down. since v0.11.0. path :: (Functor n, Monad n) => T.Text -> ApiaryT c n m a -> ApiaryT c n m a-path p = focus $ \l -> path' >> return l+path p = focus $ \l -> l <$ path' where path' = liftM actionPathInfo getState >>= \case c:_ | c == p -> modifyState (\s -> s {actionPathInfo = tail $ actionPathInfo s}) _ -> empty++-- | check consumed pathes. since v0.11.1.+endPath :: (Functor n, Monad n) => ApiaryT c n m a -> ApiaryT c n m a+endPath = focus $ \l -> l <$ end+ where+ end = liftM actionPathInfo getState >>= \case+ [] -> return ()+ _ -> empty -- | get first path and drill down. since v0.11.0. fetch :: (Path a, Functor n, Monad n)
src/Control/Monad/Apiary/Filter/Internal/Capture/TH.hs view
@@ -18,7 +18,7 @@ splitPath = map T.unpack . T.splitOn "/" . T.pack mkCap :: [String] -> ExpQ-mkCap [] = [|id|]+mkCap [] = [|Capture.endPath|] mkCap ((':':tyStr):as) = do -- ty <- lookupTypeName tyStr >>= maybe (fail "") return let ty = mkName tyStr
src/Control/Monad/Apiary/Filter/Internal/Strategy.hs view
@@ -116,25 +116,25 @@ _ -> Just l -- | construct Option proxy. since 0.5.1.0.-pOption :: Proxy a -> Proxy (Option a)+pOption :: proxy a -> Proxy (Option a) pOption _ = Proxy -- | construct First proxy. since 0.5.1.0.-pFirst :: Proxy a -> Proxy (First a)+pFirst :: proxy a -> Proxy (First a) pFirst _ = Proxy -- | construct One proxy. since 0.5.1.0.-pOne :: Proxy a -> Proxy (One a)+pOne :: proxy a -> Proxy (One a) pOne _ = Proxy -- | construct Many proxy. since 0.5.1.0.-pMany :: Proxy a -> Proxy (Many a)+pMany :: proxy a -> Proxy (Many a) pMany _ = Proxy -- | construct Some proxy. since 0.5.1.0.-pSome :: Proxy a -> Proxy (Some a)+pSome :: proxy a -> Proxy (Some a) pSome _ = Proxy -- | construct Check proxy. since 0.5.1.0.-pCheck :: Proxy a -> Proxy (Check a)+pCheck :: proxy a -> Proxy (Check a) pCheck _ = Proxy
src/Data/Apiary/Param.hs view
@@ -154,7 +154,7 @@ pVoid :: Proxy () pVoid = Proxy -pMaybe :: Proxy a -> Proxy (Maybe a)+pMaybe :: proxy a -> Proxy (Maybe a) pMaybe _ = Proxy pFile :: Proxy (File L.ByteString)
test/main.hs view
@@ -124,7 +124,8 @@ , testReq "POST /12" $ assertPlain200 "Double 12.0" captureApp , testReq "GET /bar" $ assertPlain200 "fall bar" captureApp , testReq "GET /baz" $ assertPlain200 "fall baz" captureApp- , testReq "GET /bar/nyan/12" $ assertPlain200 "nyan 12" captureApp+ , testReq "GET /bar/nyan/12" $ assertPlain200 "nyan 12" captureApp+ , testReq "GET /bar/nyan/12/other" $ assert404 captureApp ] --------------------------------------------------------------------------------