packages feed

wai-middleware-content-type 0.6.0 → 0.6.1

raw patch · 13 files changed

+62/−55 lines, 13 filesdep ~wai-transformersPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: wai-transformers

API changes (from Hackage documentation)

- Network.Wai.Middleware.ContentType.Types: Other :: Text -> FileExt
+ Network.Wai.Middleware.ContentType.Types: Other :: {-# UNPACK #-} !Text -> FileExt

Files

src/Network/Wai/Middleware/ContentType.hs view
@@ -42,11 +42,11 @@ import Network.Wai.Middleware.ContentType.Lucius import Network.Wai.Middleware.ContentType.Text -import Network.Wai.Trans (Response, MiddlewareT, requestHeaders,-                         pathInfo)+import Network.Wai (Response, requestHeaders, pathInfo)+import Network.Wai.Trans (MiddlewareT) import Network.Wai.Logger (withStdoutLogger) import qualified Data.HashMap.Lazy as HM-import Data.Monoid+import Data.Monoid (First (..)) import Control.Monad.Trans.Control.Aligned (MonadBaseControl (..)) import Data.Singleton.Class (Extractable (..)) 
src/Network/Wai/Middleware/ContentType/Blaze.hs view
@@ -4,7 +4,7 @@  module Network.Wai.Middleware.ContentType.Blaze where -import           Network.Wai.Middleware.ContentType.Types+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, tell', FileExt (Html), ResponseVia (..)) import           Network.HTTP.Types                      (status200, Status, ResponseHeaders) import           Network.Wai                             (Response, responseBuilder) 
src/Network/Wai/Middleware/ContentType/ByteString.hs view
@@ -1,6 +1,6 @@ module Network.Wai.Middleware.ContentType.ByteString where -import           Network.Wai.Middleware.ContentType.Types+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, tell', getLogger, FileExt, ResponseVia (..)) import           Network.HTTP.Types                      (status200, Status, ResponseHeaders) import           Network.Wai                             (Response, responseLBS) 
src/Network/Wai/Middleware/ContentType/Cassius.hs view
@@ -6,11 +6,11 @@ module Network.Wai.Middleware.ContentType.Cassius where  import           Network.Wai.Middleware.ContentType.Types as CT-import           Network.Wai.Middleware.ContentType.Text+import           Network.Wai.Middleware.ContentType.Text  (textOnly) import           Network.HTTP.Types                       (status200, Status, ResponseHeaders) import           Network.Wai                              (Response) -import           Text.Cassius+import           Text.Cassius (Css, renderCss) import qualified Data.HashMap.Lazy                        as HM  
src/Network/Wai/Middleware/ContentType/Clay.hs view
@@ -6,12 +6,12 @@ module Network.Wai.Middleware.ContentType.Clay where  import           Network.Wai.Middleware.ContentType.Types as CT-import           Network.Wai.Middleware.ContentType.Text+import           Network.Wai.Middleware.ContentType.Text  (textOnly) import           Network.HTTP.Types                       (status200, Status, ResponseHeaders) import           Network.Wai                              (Response) -import           Clay.Render-import           Clay.Stylesheet+import           Clay.Render (Config, renderWith)+import           Clay.Stylesheet (Css, App) import qualified Data.HashMap.Lazy                        as HM  
src/Network/Wai/Middleware/ContentType/Json.hs view
@@ -4,8 +4,8 @@  module Network.Wai.Middleware.ContentType.Json where -import           Network.Wai.Middleware.ContentType.Types-import           Network.Wai.Middleware.ContentType.ByteString+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, FileExt (Json), mapHeaders, overFileExts)+import           Network.Wai.Middleware.ContentType.ByteString (bytestringOnly, bytestring) import           Network.HTTP.Types                      (Status, ResponseHeaders) import           Network.Wai                             (Response) @@ -21,8 +21,8 @@         ) => j           -> FileExtListenerT m () json =-  (overFileExts [Json] $ mapHeaders (("Content-Type","application/json"):))-  . bytestring Json . A.encode+  overFileExts [Json] (mapHeaders (("Content-Type","application/json"):))+    . bytestring Json . A.encode  {-# INLINEABLE json #-} 
src/Network/Wai/Middleware/ContentType/Julius.hs view
@@ -6,11 +6,11 @@ module Network.Wai.Middleware.ContentType.Julius where  import           Network.Wai.Middleware.ContentType.Types as CT-import           Network.Wai.Middleware.ContentType.Text+import           Network.Wai.Middleware.ContentType.Text  (textOnly) import           Network.HTTP.Types                       (status200, Status, ResponseHeaders) import           Network.Wai                              (Response) -import           Text.Julius+import           Text.Julius (Javascript (..), renderJavascript) import qualified Data.HashMap.Lazy                        as HM  
src/Network/Wai/Middleware/ContentType/Lucid.hs view
@@ -4,12 +4,12 @@  module Network.Wai.Middleware.ContentType.Lucid where -import           Network.Wai.Middleware.ContentType.Types+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, tell', FileExt (Html), ResponseVia (..)) import           Network.HTTP.Types                      (status200, Status, ResponseHeaders) import           Network.Wai                             (Response, responseBuilder)  import qualified Lucid.Base                              as L-import           Control.Monad.Trans+import           Control.Monad.Trans (MonadTrans (lift)) import qualified Data.HashMap.Lazy                       as HM  
src/Network/Wai/Middleware/ContentType/Lucius.hs view
@@ -6,11 +6,11 @@ module Network.Wai.Middleware.ContentType.Lucius where  import           Network.Wai.Middleware.ContentType.Types as CT-import           Network.Wai.Middleware.ContentType.Text+import           Network.Wai.Middleware.ContentType.Text  (textOnly) import           Network.HTTP.Types                       (status200, Status, ResponseHeaders) import           Network.Wai                              (Response) -import           Text.Lucius+import           Text.Lucius (Css, renderCss) import qualified Data.HashMap.Lazy                        as HM  
src/Network/Wai/Middleware/ContentType/Text.hs view
@@ -4,7 +4,7 @@  module Network.Wai.Middleware.ContentType.Text where -import           Network.Wai.Middleware.ContentType.Types+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, tell', FileExt (Text), ResponseVia (..)) import           Network.HTTP.Types                       (status200, Status, ResponseHeaders) import           Network.Wai                              (Response, responseBuilder) 
src/Network/Wai/Middleware/ContentType/Types.hs view
@@ -45,29 +45,33 @@   ) where  import qualified Data.Text              as T-import           Data.HashMap.Lazy hiding (null)+import           Data.HashMap.Lazy (HashMap) import qualified Data.HashMap.Lazy as HM-import           Data.Monoid+import           Data.Monoid ((<>)) import           Data.Maybe (fromMaybe)-import           Data.Url-import           Data.Hashable+import           Data.Url (MonadUrl)+import           Data.Hashable (Hashable) import qualified Data.ByteString        as BS-import           Control.Applicative-import           Control.Monad.Base-import           Control.Monad.Catch-import           Control.Monad.Cont-import           Control.Monad.Except-import           Control.Monad.Trans.Control hiding (embed)-import           Control.Monad.Trans.Resource-import           Control.Monad.State-import           Control.Monad.Writer hiding (tell)-import           Control.Monad.Reader-import           Control.Monad.Logger+import           Control.Monad (MonadPlus)+import           Control.Applicative (Alternative)+import           Control.Monad.Fix (MonadFix)+import           Control.Monad.IO.Class (MonadIO)+import           Control.Monad.Trans (MonadTrans (..))+import           Control.Monad.Base (MonadBase (..))+import           Control.Monad.Catch (MonadMask, MonadCatch, MonadThrow)+import           Control.Monad.Cont (MonadCont)+import           Control.Monad.Except (MonadError)+import           Control.Monad.Trans.Control (MonadTransControl (..), MonadBaseControl (..), ComposeSt, defaultRestoreM, defaultLiftBaseWith)+import           Control.Monad.Trans.Resource (MonadResource)+import           Control.Monad.State (StateT (..), MonadState, get, put, execStateT, modify')+import           Control.Monad.Writer (MonadWriter)+import           Control.Monad.Reader (ReaderT (..), MonadReader (..))+import           Control.Monad.Logger (MonadLogger (..)) -import           GHC.Generics+import           GHC.Generics (Generic) import           Network.HTTP.Types (Status, ResponseHeaders) import           Network.HTTP.Media (mapAccept)-import           Network.Wai.Trans (Response)+import           Network.Wai (Response)   -- | Version of 'Control.Monad.Writer.tell' for 'Control.Monad.State.StateT'@@ -84,7 +88,7 @@   | Json   | Text   | Markdown-  | Other T.Text -- ^ excluding prefix period, i.e. `foo`+  | Other {-# UNPACK #-} !T.Text -- ^ excluding prefix period, i.e. `foo`   deriving (Show, Eq, Ord, Generic)  instance Hashable FileExt@@ -94,7 +98,7 @@ getFileExt :: [T.Text] -> Maybe FileExt getFileExt chunks = case chunks of   [] -> Nothing-  xs -> toExt . T.breakOnEnd "." $ last xs+  xs -> toExt (T.breakOnEnd "." (last xs))  {-# INLINEABLE getFileExt #-} @@ -111,7 +115,7 @@   | x `elem` jsons       = Just Json   | x `elem` texts       = Just Text   | x `elem` markdowns   = Just Markdown-  | otherwise            = Just $ Other x+  | otherwise            = Just (Other x)   where     htmls       = ["htm", "html"]     csss        = ["css"]@@ -171,17 +175,17 @@              )  getLogger :: Monad m => FileExtListenerT m (Status -> Maybe Integer -> IO ())-getLogger = FileExtListenerT $ ReaderT $ \aplogger -> pure aplogger+getLogger = FileExtListenerT (ReaderT pure)  instance MonadTrans FileExtListenerT where-  lift m = FileExtListenerT $ ReaderT $ \_ -> lift m+  lift m = FileExtListenerT (ReaderT (\_ -> lift m))  instance MonadReader r m => MonadReader r (FileExtListenerT m) where-  ask = FileExtListenerT $ ReaderT $ \_ -> ask+  ask = FileExtListenerT (ReaderT (const ask))   local f (FileExtListenerT (ReaderT g)) = FileExtListenerT $ ReaderT $ \x -> local f (g x)  instance Monad m => Monoid (FileExtListenerT m ()) where-  mempty = FileExtListenerT $ put mempty+  mempty = FileExtListenerT (put mempty)   mappend x y = x >> y  deriving instance (MonadResource m, MonadBase IO m) => MonadResource (FileExtListenerT m)@@ -270,6 +274,6 @@ --   >   text "foo" --   >   invalidEncoding myErrorHandler -- handles all except text/plain invalidEncoding :: Monad m => ResponseVia -> FileExtListenerT m ()-invalidEncoding r = mapM_ (\t -> tell' $ HM.singleton t r) [Html,Css,JavaScript,Json,Text,Markdown]+invalidEncoding r = mapM_ (\t -> tell' (HM.singleton t r)) [Html,Css,JavaScript,Json,Text,Markdown]  {-# INLINEABLE invalidEncoding #-}
test/Network/Wai/Middleware/ContentTypeSpec.hs view
@@ -6,16 +6,17 @@ module Network.Wai.Middleware.ContentTypeSpec where  import Network.Wai.Middleware.ContentType-import Network.Wai.Trans-import Network.Wai.Internal-import Network.HTTP.Types+  ( FileExtListenerT, FileExt (Other), bytestring, julius, cassius, json, lucid, text+  , textOnly, fileExtsToMiddleware+  )+import Network.Wai (Application)+import Network.HTTP.Types (status406) import qualified Data.Text      as T-import qualified Data.Text.Lazy as LT import qualified Data.Text.Lazy.Encoding as LT import qualified Lucid          as L import qualified Text.Lucius    as SL import qualified Text.Julius    as SJ-import Test.Hspec+import Test.Hspec (Spec, it, describe) import Test.Hspec.Wai   as HW  
wai-middleware-content-type.cabal view
@@ -2,13 +2,15 @@ -- -- see: https://github.com/sol/hpack ----- hash: 9afbbd3c4ff146797016c5eef9779f0e704a685311098f1e20cdf09ca06c944f+-- hash: f497bfc449fb4f1433a5f05220106caabf2e30185da00ecd30075efef2dfa54d  name:           wai-middleware-content-type-version:        0.6.0+version:        0.6.1 synopsis:       Route to different middlewares based on the incoming Accept header. description:    Please see the README on Github at <https://git.localcooking.com/tooling/wai-middleware-content-type#readme> category:       Web+homepage:       https://github.com/athanclark/wai-middleware-content-type#readme+bug-reports:    https://github.com/athanclark/wai-middleware-content-type/issues author:         Athan Clark maintainer:     athan.clark@localcooking.com copyright:      2018 Athan Clark@@ -22,7 +24,7 @@  source-repository head   type: git-  location: git://git.localcooking.com/tooling/wai-middleware-content-type.git+  location: https://github.com/athanclark/wai-middleware-content-type  library   exposed-modules:@@ -69,7 +71,7 @@     , urlpath >=8.0.1     , wai >=3.2     , wai-logger-    , wai-transformers+    , wai-transformers >=0.1.0   default-language: Haskell2010  test-suite wai-middleware-content-type-test