packages feed

firefly 0.1.1.0 → 0.2.0.0

raw patch · 5 files changed

+20/−5 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Web.Firefly: respondWith :: ToResponse r => Handler r -> App ()
+ Web.Firefly: runHandler :: Handler r -> App r
+ Web.Firefly: type HeaderMap = Map (CI Text) [Text]
+ Web.Firefly.Response: respondWith :: ToResponse r => Handler r -> App ()
+ Web.Firefly.Types: runHandler :: Handler r -> App r
- Web.Firefly: route :: (ToResponse r) => Pattern -> Handler r -> App ()
+ Web.Firefly: route :: ToResponse r => Pattern -> Handler r -> App ()
- Web.Firefly: type Handler a = App a
+ Web.Firefly: type Handler a = ReaderT ReqContext IO a
- Web.Firefly.Handler: route :: (ToResponse r) => Pattern -> Handler r -> App ()
+ Web.Firefly.Handler: route :: ToResponse r => Pattern -> Handler r -> App ()
- Web.Firefly.Types: type Handler a = App a
+ Web.Firefly.Types: type Handler a = ReaderT ReqContext IO a

Files

firefly.cabal view
@@ -1,5 +1,5 @@ name:                firefly-version:             0.1.1.0+version:             0.2.0.0 synopsis:            A simple HTTP server framework -- description: homepage:            https://github.com/ChrisPenner/firefly#readme
src/Web/Firefly.hs view
@@ -9,9 +9,11 @@   -- * Types   , App   , Handler+  , HeaderMap    -- * Handlers   , route+  , runHandler    -- * Requests   , getPath@@ -34,6 +36,7 @@   -- * Responses   , ToResponse(..)   , respond+  , respondWith    -- ** Wrapper Types   , Json(..)
src/Web/Firefly/Handler.hs view
@@ -28,7 +28,7 @@ -- >   route "/" indexHandler -- >   route "/hello.*" helloHandler -- >   route "/helloHarry" helloHarryHandler-route :: (ToResponse r) => Pattern -> Handler r -> App ()+route :: ToResponse r => Pattern -> Handler r -> App () route routePath handler = do   doesPathMatch <- pathMatches routePath-  when doesPathMatch (handler >>= respond . toResponse)+  when doesPathMatch $ respondWith handler
src/Web/Firefly/Response.hs view
@@ -1,10 +1,12 @@ {-# language FlexibleInstances #-} {-# language OverloadedStrings #-} {-# language UndecidableInstances #-}+{-# language RankNTypes #-} module Web.Firefly.Response   ( ToResponse(..)   , Json(..)   , respond+  , respondWith   ) where  import Data.Function ((&))@@ -69,3 +71,8 @@ -- in the App or Handler Monads will not be run. respond :: ToResponse r => r -> App () respond =  throwError . toResponse++-- | Use a given handler to respond to the request. +-- Any handlers following this will not run.+respondWith :: ToResponse r => Handler r -> App ()+respondWith handler = runHandler handler >>= respond
src/Web/Firefly/Types.hs view
@@ -1,8 +1,9 @@+{-# language NamedFieldPuns #-} module Web.Firefly.Types where  import Control.Monad.Reader import Control.Monad.Except-import Network.Wai as W+import qualified Network.Wai as W import qualified Data.Text as T import qualified Data.Map as M import qualified Data.CaseInsensitive as CI@@ -13,7 +14,11 @@  -- | Handler is an alias for 'App', currently provided for semantic reasons, -- but the two may diverge in the future.-type Handler a = App a+type Handler a = ReaderT ReqContext IO  a++-- | Runs a handler within an App WITHOUT rendering the response+runHandler :: Handler r -> App r+runHandler handler = ask >>= liftIO . runReaderT handler  -- | A regex pattern for route matching. type Pattern = T.Text