packages feed

rest-core 0.27.0.3 → 0.27.1

raw patch · 6 files changed

+59/−8 lines, 6 filesdep −cgidep −multipartPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies removed: cgi, multipart

API changes (from Hackage documentation)

+ Rest.Multipart: BodyPart :: Headers -> ByteString -> BodyPart
+ Rest.Multipart: HeaderName :: String -> HeaderName
+ Rest.Multipart: MultiPart :: [BodyPart] -> MultiPart
+ Rest.Multipart: data BodyPart
+ Rest.Multipart: data MultiPart
+ Rest.Multipart: instance Eq BodyPart
+ Rest.Multipart: instance Eq HeaderName
+ Rest.Multipart: instance Eq MultiPart
+ Rest.Multipart: instance Ord BodyPart
+ Rest.Multipart: instance Ord HeaderName
+ Rest.Multipart: instance Ord MultiPart
+ Rest.Multipart: instance Show BodyPart
+ Rest.Multipart: instance Show HeaderName
+ Rest.Multipart: instance Show MultiPart
+ Rest.Multipart: newtype HeaderName
+ Rest.Multipart: showMultipartBody :: String -> MultiPart -> ByteString
- Rest.Dictionary.Types: data Dict h_a824 p_a825 i_a826 o_a827 e_a828
+ Rest.Dictionary.Types: data Dict h_a8sU p_a8sV i_a8sW o_a8sX e_a8sY

Files

rest-core.cabal view
@@ -1,5 +1,5 @@ Name:             rest-core-Version:          0.27.0.3+Version:          0.27.1 Description:      Rest API library. Synopsis:         Rest API library. Maintainer:       code@silk.co@@ -17,7 +17,6 @@     , aeson                     >= 0.7    &&  < 0.8     , aeson-utils               == 0.2.*     , bytestring                >= 0.9    &&  < 0.11-    , cgi                       == 3001.1.*     , containers                >= 0.3    &&  < 0.6     , either                    >= 3.4    &&  < 4.2     , errors                    == 1.4.*@@ -26,7 +25,6 @@     , hxt-pickle-utils          == 0.1.*     , json-schema               == 0.4.*     , mtl                       >= 2.0    &&  < 2.2-    , multipart                 == 0.1.*     , random                    == 1.0.*     , rest-types                == 1.9.*     , safe                      >= 0.2    &&  < 0.4@@ -51,6 +49,7 @@                     Rest.Error                     Rest.Handler                     Rest.Info+                    Rest.Multipart                     Rest.Resource                     Rest.Run                     Rest.Schema
src/Rest/Dictionary/Combinators.hs view
@@ -54,12 +54,12 @@ import Data.JSON.Schema import Data.Text.Lazy (Text) import Data.Typeable-import Network.Multipart (BodyPart) import Text.XML.HXT.Arrow.Pickle import qualified Data.Label.Total as L  import Rest.Dictionary.Types import Rest.Info+import Rest.Multipart (BodyPart)  -- | Add custom sub-dictionary for recognizing headers. 
src/Rest/Dictionary/Types.hs view
@@ -52,11 +52,11 @@ import Data.Label.Derive import Data.Text.Lazy (Text) import Data.Typeable-import Network.Multipart (BodyPart) import Text.XML.HXT.Arrow.Pickle  import Rest.Error import Rest.Info+import Rest.Multipart (BodyPart)  -- | The `Format` datatype enumerates all input and output formats we might recognize. 
src/Rest/Driver/Perform.hs view
@@ -22,7 +22,6 @@ import Data.Maybe import Data.Text.Lazy.Encoding (decodeUtf8) import Data.UUID (UUID)-import Network.Multipart (showMultipartBody, MultiPart(..), BodyPart (..)) import Safe import System.IO.Unsafe import System.Random (randomIO)@@ -40,6 +39,7 @@ import Rest.Driver.Types import Rest.Error import Rest.Handler+import Rest.Multipart (showMultipartBody, MultiPart(..), BodyPart (..)) import qualified Rest.Dictionary   as D import qualified Rest.Driver.Types as Rest 
src/Rest/Driver/Routing.hs view
@@ -25,8 +25,6 @@ import Control.Monad.Trans.Either import Control.Monad.Trans.Maybe import Data.ByteString (ByteString)-import Network.Multipart (BodyPart (..))-import Network.CGI.Protocol  (HeaderName (..)) import Safe import qualified Control.Monad.State       as State import qualified Data.ByteString.UTF8      as UTF8@@ -40,6 +38,7 @@ import Rest.Dictionary import Rest.Error import Rest.Handler (ListHandler, Handler, GenHandler (..), Env (..), range, mkInputHandler, Range (..))+import Rest.Multipart (BodyPart (..), HeaderName (..)) import Rest.Types.Container.Resource (Resource, Resources (..)) import qualified Rest.Types.Container.Resource as R import qualified Rest.Api                      as Rest
+ src/Rest/Multipart.hs view
@@ -0,0 +1,53 @@+-- | Data types for representing and showing multi-part bodies.+-- Copied from a hidden module in the cgi package.+module Rest.Multipart+  ( MultiPart (..)+  , BodyPart (..)+  , HeaderName (..)+  , showMultipartBody+  ) where++import Data.Char (toLower)+import Data.ByteString.Lazy.Char8 (ByteString)+import Data.List (intersperse)++import qualified Data.ByteString.Lazy.Char8 as BS++showMultipartBody :: String -> MultiPart -> ByteString+showMultipartBody b (MultiPart bs) =+    unlinesCRLF $ foldr (\x xs -> d:showBodyPart x:xs) [c,BS.empty] bs+ where d = BS.pack ("--" ++ b)+       c = BS.pack ("--" ++ b ++ "--")++showBodyPart :: BodyPart -> ByteString+showBodyPart (BodyPart hs c) =+    unlinesCRLF $ [BS.pack (n++": "++v) | (HeaderName n,v) <- hs] ++ [BS.empty,c]+++data MultiPart = MultiPart [BodyPart]+               deriving (Show, Eq, Ord)++data BodyPart = BodyPart Headers ByteString+                deriving (Show, Eq, Ord)++-- | HTTP headers.+type Headers = [(HeaderName, String)]++-- | A string with case insensitive equality and comparisons.+newtype HeaderName = HeaderName String deriving (Show)++instance Eq HeaderName where+    HeaderName x == HeaderName y = map toLower x == map toLower y++instance Ord HeaderName where+    HeaderName x `compare` HeaderName y = map toLower x `compare` map toLower y++--+-- * RFC 2046 CRLF+--++crlf :: ByteString+crlf = BS.pack "\r\n"++unlinesCRLF :: [ByteString] -> ByteString+unlinesCRLF = BS.concat . intersperse crlf