packages feed

rest-example 0.2.0.3 → 0.2.0.4

raw patch · 10 files changed

+96/−27 lines, 10 filesdep +base-compatdep +bytestringdep ~aesondep ~rest-coredep ~transformers

Dependencies added: base-compat, bytestring

Dependency ranges changed: aeson, rest-core, transformers, transformers-compat, warp

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Changelog +#### 0.2.0.4++* Allow rest-core-0.39.+ #### 0.2.0.3  * Update lots of dependencies.
example-api/Api.hs view
@@ -13,7 +13,7 @@  -- | Defines a versioned api api :: Api BlogApi-api = [(mkVersion 1 0 0, Some1 blog)]+api = Versioned [(mkVersion 1 0 0, Some1 blog)]  -- | The entire routing table for v1.0.0 of the blog blog :: Router BlogApi BlogApi
example-api/Api/Post.hs view
@@ -1,4 +1,7 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE+    DeriveDataTypeable+  , NoImplicitPrelude+  #-} module Api.Post   ( Identifier (..)   , WithPost@@ -6,7 +9,8 @@   , postFromIdentifier   ) where -import Control.Applicative+import Prelude.Compat+ import Control.Concurrent.STM (STM, TVar, atomically, modifyTVar, readTVar) import Control.Monad (unless) import Control.Monad.Error.Class
example-api/Api/Test.hs view
@@ -5,21 +5,31 @@   , OverloadedStrings   , ScopedTypeVariables   #-}-module Api.Test where+module Api.Test+  ( resource+  , WithText+  , Err (..)+  , Ok (..)+  ) where -import Control.Monad.Error.Class+import Control.Monad.Except import Control.Monad.Reader import Data.Aeson+import Data.ByteString.Lazy (ByteString) import Data.Data import Data.JSON.Schema+import Data.Maybe import Data.Text (Text) import GHC.Generics import Generics.Generic.Aeson import Generics.XmlPickler+import Safe import Text.XML.HXT.Arrow.Pickle  import Rest-import qualified Rest.Resource as R+import Rest.Dictionary+import qualified Rest.Driver.Perform as Driver (accept)+import qualified Rest.Resource       as R  import ApiTypes import qualified Api.Test.Err2 as E2@@ -51,7 +61,10 @@                 , ("differentFormats"   , differentFormats   )                 , ("intersectedFormats" , intersectedFormats )                 , ("intersectedFormats2", intersectedFormats2)-                , ("errorImport"        , errorImport        )+                , ("rawXmlIO"           , rawXmlIO           )+                , ("rawJsonIO"          , rawJsonIO          )+                , ("rawJsonAndXmlI"     , rawJsonAndXmlI_    )+                , ("rawJsonAndXmlO"     , rawJsonAndXmlO_    )                 , ("noError"            , noError            )                 , ("justStringO"        , justStringO        )                 , ("preferJson"         , preferJson         )@@ -85,11 +98,43 @@     "error" -> throwError $ domainReason Err     _       -> return Ok -errorImport :: Handler WithText-errorImport = mkIdHandler (stringI . rawXmlO . xmlE) $ \s (_::Text) ->+rawXmlIO :: Handler WithText+rawXmlIO = mkIdHandler (rawXmlI . rawXmlO . xmlE) $ \s _ ->   case s of-    "error" -> throwError $ domainReason E2.Err-    _       -> return "<ok/>"+    "<error/>" -> throwError $ domainReason E2.Err+    _          -> return "<ok/>"++rawJsonIO :: Handler WithText+rawJsonIO = mkIdHandler (rawJsonI . rawJsonO . jsonE) $ \s _ ->+  case s of+    "\"error\"" -> throwError $ domainReason E2.Err+    _           -> return "\"ok\""++rawJsonAndXmlI_ :: Handler WithText+rawJsonAndXmlI_ = mkInputHandler (stringO . rawJsonAndXmlI) handler+  where+    handler :: Either Json Xml -> ExceptT Reason_ WithText String+    handler = return . \case+      Left (Json _) -> "json input"+      Right (Xml _) -> "xml input"++rawJsonAndXmlO_ :: Handler WithText+rawJsonAndXmlO_ = mkHandler (addHeader contentType . mkHeader accept . mkPar typeParam . rawJsonAndXmlO) handler+  where+    handler :: Env (Maybe String, Maybe String) (Maybe String) () -> ExceptT Reason_ WithText ByteString+    handler (Env (mContentType, mAccept) mType ()) = do+      let accs = Driver.accept mAccept mContentType mType+      if JsonFormat `elem` accs+        then return "\"json\""+        else if XmlFormat `elem` accs+          then return "<xml/>"+          else throwError . OutputError $ UnsupportedFormat "Only json and xml accept headers are allowed"+    contentType :: Header (Maybe String)+    contentType  = Header ["Content-Type"] (return . headMay . catMaybes)+    typeParam   :: Param (Maybe String)+    typeParam    = Param ["type"] (return . headMay . catMaybes)+    accept      :: Header (Maybe String)+    accept       = Header ["Accept"] (return . headMay . catMaybes)  noError :: Handler WithText noError = mkConstHandler jsonO $ return Ok
example-api/Api/Test/Err2.hs view
@@ -2,7 +2,7 @@     DeriveDataTypeable   , DeriveGeneric   #-}-module Api.Test.Err2 where+module Api.Test.Err2 (Err (..)) where  import Data.Aeson import Data.Data
example-api/Api/Test/ReservedName.hs view
@@ -7,7 +7,7 @@   , TemplateHaskell   , TypeFamilies   #-}-module Api.Test.ReservedName where+module Api.Test.ReservedName (resource) where  import Control.Monad.Reader import Data.Text (Text)
example-api/Api/User.hs view
@@ -1,6 +1,8 @@+{-# LANGUAGE NoImplicitPrelude #-} module Api.User (resource) where -import Control.Applicative ((<$>))+import Prelude.Compat+ import Control.Concurrent.STM (atomically, modifyTVar, readTVar) import Control.Monad.Error.Class (throwError) import Control.Monad.Reader (ReaderT, asks)
example-api/ApiTypes.hs view
@@ -1,7 +1,11 @@-{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE+    GeneralizedNewtypeDeriving+  , NoImplicitPrelude+  #-} module ApiTypes where -import Control.Applicative (Applicative)+import Prelude.Compat+ import Control.Concurrent.STM (TVar) import Control.Monad.Reader (MonadReader, ReaderT (..)) import Control.Monad.Trans (MonadIO)
example-api/Example.hs view
@@ -1,7 +1,11 @@-{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE+    NoImplicitPrelude+  , OverloadedStrings+  #-} module Example (exampleBlog) where -import Control.Applicative+import Prelude.Compat+ import Control.Concurrent.STM (newTVarIO) import Data.HashMap.Strict (HashMap) import Data.Set (Set)
rest-example.cabal view
@@ -1,5 +1,5 @@ name:                rest-example-version:             0.2.0.3+version:             0.2.0.4 synopsis:            Example project for rest homepage:            http://www.github.com/silkapp/rest license:             BSD3@@ -41,17 +41,19 @@     Type.UserSignupError   build-depends:       base >= 4.6 && < 4.9-    , aeson >= 0.7 && < 0.11+    , aeson >= 0.7 && < 0.12+    , base-compat >= 0.8 && < 0.10+    , bytestring >= 0.9 && < 0.11     , containers >= 0.3 && < 0.6     , generic-aeson == 0.2.*     , hxt == 9.3.*     , json-schema >= 0.6 && < 0.8     , mtl >= 2.0 && < 2.3     , generic-xmlpickler >= 0.1.0.1 && < 0.2-    , rest-core >= 0.36 && < 0.38+    , rest-core >= 0.39 && < 0.40     , safe >= 0.2 && < 0.4-    , transformers >= 0.2 && < 0.5-    , transformers-compat == 0.4.*+    , transformers >= 0.2 && < 0.6+    , transformers-compat >= 0.4 && < 0.6     , stm >= 2.1 && < 2.5     , text >= 0.11 && < 1.3     , time >= 1.1 && < 1.6@@ -89,11 +91,12 @@     buildable: True     build-depends:         base >= 4.6 && < 4.9+      , base-compat >= 0.8 && < 0.10       , happstack-server >= 7.1 && < 7.5       , mtl >= 2.0 && < 2.3       , rest-example       , rest-happstack >= 0.2 && < 0.4-      , transformers-compat == 0.4.*+      , transformers-compat >= 0.4 && < 0.6   else     buildable: False @@ -106,9 +109,10 @@     buildable: True     build-depends:         base >= 4.6 && < 4.9+      , base-compat >= 0.8 && < 0.10       , rest-example       , rest-wai >= 0.1 && < 0.3-      , warp >= 2.1 && < 3.2+      , warp >= 2.1 && < 3.3   else     buildable: False @@ -121,13 +125,14 @@     buildable: True     build-depends:         base >= 4.6 && < 4.9+      , base-compat >= 0.8 && < 0.10       , mtl >= 2.0 && < 2.3-      , rest-core >= 0.36 && < 0.38+      , rest-core >= 0.39 && < 0.40       , rest-example       , rest-snap >= 0.1 && < 0.3       , snap-core == 0.9.*       , snap-server == 0.9.*-      , transformers-compat == 0.4.*+      , transformers-compat >= 0.4 && < 0.6   else     buildable: False @@ -140,6 +145,7 @@     buildable: True     build-depends:         base >= 4.6 && < 4.9+      , base-compat >= 0.8 && < 0.10       , rest-example       , rest-gen >= 0.14 && < 0.20   else