swagger2 2.3 → 2.3.0.1
raw patch · 7 files changed
+82/−23 lines, 7 filesdep +utf8-stringdep −aeson-qqdep ~QuickCheckdep ~aesondep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: utf8-string
Dependencies removed: aeson-qq
Dependency ranges changed: QuickCheck, aeson, base, base-compat-batteries, bytestring, containers, generics-sop, hspec, insert-ordered-containers, network, quickcheck-instances, scientific, template-haskell, uuid-types
API changes (from Hackage documentation)
- Data.Swagger.Lens: _Inline :: forall a_axzV a_a1Xom. Prism (Referenced a_a1Xom) (Referenced a_axzV) a_a1Xom a_axzV
+ Data.Swagger.Lens: _Inline :: forall a_axAf a_a1XoG. Prism (Referenced a_a1XoG) (Referenced a_axAf) a_a1XoG a_axAf
- Data.Swagger.Lens: _Ref :: forall a_axzV. Prism' (Referenced a_axzV) Reference
+ Data.Swagger.Lens: _Ref :: forall a_axAf. Prism' (Referenced a_axAf) Reference
Files
- CHANGELOG.md +5/−0
- swagger2.cabal +28/−19
- test/Data/Aeson/QQ/Simple.hs +45/−0
- test/Data/Swagger/CommonTestTypes.hs +1/−1
- test/Data/Swagger/ParamSchemaSpec.hs +1/−1
- test/Data/Swagger/SchemaSpec.hs +1/−1
- test/Data/SwaggerSpec.hs +1/−1
CHANGELOG.md view
@@ -1,3 +1,8 @@+2.3.0.1+-------++- Support GHC-8.6+ 2.3 ---
swagger2.cabal view
@@ -1,8 +1,9 @@ cabal-version: >=1.10 name: swagger2-version: 2.3+version: 2.3.0.1 synopsis: Swagger 2.0 data model+category: Web, Swagger description: This library is inteded to be used for decoding and encoding Swagger 2.0 API specifications as well as manipulating them.@@ -16,14 +17,19 @@ author: Nickolay Kudasov maintainer: nickolay@getshoptv.com copyright: (c) 2015-2016, GetShopTV-category: Web, Swagger build-type: Custom extra-source-files: README.md , CHANGELOG.md , examples/*.hs , include/overlapping-compat.h-tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3+tested-with:+ GHC ==7.8.4+ || ==7.10.3+ || ==8.0.2+ || ==8.2.2+ || ==8.4.3+ || ==8.6.1 custom-setup setup-depends:@@ -53,12 +59,12 @@ -- GHC boot libraries build-depends:- base >=4.7 && <4.12- , bytestring >=0.10.4 && <0.11- , containers >=0.5.5.1 && <0.6- , template-haskell >=2.9.0.0 && <2.14- , time >=1.4.2 && <1.9- , transformers >=0.3.0.0 && <0.6+ base >=4.7 && <4.13+ , bytestring >=0.10.4.0 && <0.11+ , containers >=0.5.5.1 && <0.7+ , template-haskell >=2.9.0.0 && <2.15+ , time >=1.4.2 && <1.9+ , transformers >=0.3.0.0 && <0.6 build-depends: mtl >=2.1 && <2.3@@ -66,18 +72,18 @@ -- other dependencies build-depends:- base-compat-batteries >=0.10.1 && <0.11- , aeson >=1.0.0.0 && <1.5+ base-compat-batteries >=0.10.4 && <0.11+ , aeson >=1.3.1.1 && <1.5 , generics-sop >=0.3.2.0 && <0.4 , hashable >=1.2.7.0 && <1.3 , http-media >=0.7.1.2 && <0.8- , insert-ordered-containers >=0.1.0.0 && <0.3+ , insert-ordered-containers >=0.2.1.0 && <0.3 , lens >=4.16.1 && <4.18 , network >=2.6.3.5 && <2.8- , scientific >=0.3.5.3 && <0.4+ , scientific >=0.3.6.2 && <0.4 , transformers-compat >=0.3 && <0.7 , unordered-containers >=0.2.9.0 && <0.3- , uuid-types >=1.0.2 && <1.1+ , uuid-types >=1.0.3 && <1.1 , vector >=0.12.0.1 && <0.13 default-language: Haskell2010@@ -100,6 +106,7 @@ , insert-ordered-containers , lens , mtl+ , template-haskell , text , time , unordered-containers@@ -107,15 +114,15 @@ -- test-suite only dependencies build-depends:- aeson-qq >=0.8.2 && <0.9- , hspec >=2.4.8 && <2.6+ hspec >=2.5.5 && <2.6 , HUnit >=1.6.0.0 && <1.7- , QuickCheck >=2.10.1 && <2.12- , quickcheck-instances >=0.3.18 && <0.14+ , QuickCheck >=2.11.3 && <2.12+ , quickcheck-instances >=0.3.19 && <0.14+ , utf8-string >=1.0.1.1 && <1.1 -- https://github.com/haskell/cabal/issues/3708 build-tool-depends:- hspec-discover:hspec-discover >=2.4.8 && <2.6+ hspec-discover:hspec-discover >=2.5.5 && <2.6 other-modules: SpecCommon@@ -124,6 +131,8 @@ Data.Swagger.ParamSchemaSpec Data.Swagger.SchemaSpec Data.Swagger.Schema.ValidationSpec++ Data.Aeson.QQ.Simple default-language: Haskell2010 test-suite doctests
+ test/Data/Aeson/QQ/Simple.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE TemplateHaskell #-}+-- | Like "Data.Aeson.QQ" but without interpolation.+module Data.Aeson.QQ.Simple where++import Data.Aeson+import Data.ByteString.Lazy.UTF8 as UTF8+import qualified Data.HashMap.Strict as HM+import qualified Data.Text as T+import qualified Data.Vector as V+import Language.Haskell.TH+import Language.Haskell.TH.Quote+import Language.Haskell.TH.Syntax (Lift (..))+import Prelude ()+import Prelude.Compat++aesonQQ :: QuasiQuoter+aesonQQ = QuasiQuoter+ { quoteExp = aesonExp+ , quotePat = const $ error "No quotePat defined for jsonQQ"+ , quoteType = const $ error "No quoteType defined for jsonQQ"+ , quoteDec = const $ error "No quoteDec defined for jsonQQ"+ }++aesonExp :: String -> ExpQ+aesonExp txt =+ case eitherDecode $ UTF8.fromString txt of+ Left err -> error $ "Error in aesonExp: " ++ show err+ Right val -> liftValue val++liftValue :: Value -> ExpQ+liftValue (String str) = [| String $(liftText str) |]+liftValue Null = [| Null |]+liftValue (Number n) = [| Number (fromRational $(return $ LitE $ RationalL (toRational n))) |]+liftValue (Bool b) = [| Bool b |]+liftValue (Array arr) = [| Array $ V.fromList $(ListE <$> traverse liftValue (V.toList arr)) |]+liftValue (Object obj) = [| object $jsList |]+ where+ jsList :: ExpQ+ jsList = ListE <$> traverse objs2list (HM.toList obj)++ objs2list :: (T.Text, Value) -> ExpQ+ objs2list (key, value) = [| ($(liftText key), $(liftValue value)) |]++liftText :: T.Text -> ExpQ+liftText t = [| T.pack $(lift $ T.unpack t) |]
test/Data/Swagger/CommonTestTypes.hs view
@@ -8,7 +8,7 @@ import Prelude.Compat import Data.Aeson (ToJSON (..), ToJSONKey (..), Value)-import Data.Aeson.QQ+import Data.Aeson.QQ.Simple import Data.Aeson.Types (toJSONKeyText) import Data.Char import Data.Map (Map)
test/Data/Swagger/ParamSchemaSpec.hs view
@@ -6,7 +6,7 @@ module Data.Swagger.ParamSchemaSpec where import Data.Aeson (Value)-import Data.Aeson.QQ+import Data.Aeson.QQ.Simple import Data.Char import Data.Proxy import GHC.Generics
test/Data/Swagger/SchemaSpec.hs view
@@ -10,7 +10,7 @@ import Control.Lens ((^.)) import Data.Aeson (Value, ToJSON(..), ToJSONKey(..)) import Data.Aeson.Types (toJSONKeyText)-import Data.Aeson.QQ+import Data.Aeson.QQ.Simple import Data.Char import qualified Data.HashMap.Strict.InsOrd as InsOrdHashMap import Data.Proxy
test/Data/SwaggerSpec.hs view
@@ -10,7 +10,7 @@ import Control.Lens import Data.Aeson-import Data.Aeson.QQ+import Data.Aeson.QQ.Simple import Data.HashMap.Strict (HashMap) import qualified Data.Set as Set import Data.Text (Text)