git.iko.soy/typeable/mock-server-client
on master help sign in
apply manual fixups to srcs
29a05f2Aleksey Uymanov
mock-server-client.cabal+2
@@ -76,6 +76,7 @@ library
76 , http-types
76 , http-types
77 , bytestring
77 , bytestring
78 , aeson
78 , aeson
79+ , openapi3
79 , unordered-containers
80 , unordered-containers
80 , vector
81 , vector
81 , scientific
82 , scientific
@@ -83,3 +84,4 @@ library
83 , mtl
84 , mtl
84 , transformers
85 , transformers
85 default-language: Haskell2010
86 default-language: Haskell2010
87+ default-extensions: DeriveGeneric
src/MockServer/Common.hs+23−5
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
1{-# LANGUAGE FlexibleInstances #-}
2{-# LANGUAGE FlexibleInstances #-}
2{-# LANGUAGE GeneralizedNewtypeDeriving #-}
3{-# LANGUAGE GeneralizedNewtypeDeriving #-}
3{-# LANGUAGE LambdaCase #-}
4{-# LANGUAGE LambdaCase #-}
@@ -33,12 +34,18 @@ where
33import qualified Control.Monad.IO.Class as MIO
34import qualified Control.Monad.IO.Class as MIO
34import qualified Control.Monad.Reader as MR
35import qualified Control.Monad.Reader as MR
35import qualified Control.Monad.Trans.Class as MT
36import qualified Control.Monad.Trans.Class as MT
37+#if MIN_VERSION_aeson(2,0,0)
38+import qualified Data.Aeson.KeyMap as KeyMap
39+import qualified Data.Aeson.Key as Key
40+import Data.Bifunctor
41+#else
42+import qualified Data.HashMap.Strict as HashMap
43+#endif
36import qualified Data.Aeson as Aeson
44import qualified Data.Aeson as Aeson
37import qualified Data.Aeson.Encoding as Encoding
45import qualified Data.Aeson.Encoding as Encoding
38import qualified Data.Bifunctor as BF
46import qualified Data.Bifunctor as BF
39import qualified Data.ByteString.Char8 as B8
47import qualified Data.ByteString.Char8 as B8
40import qualified Data.ByteString.Lazy.Char8 as LB8
48import qualified Data.ByteString.Lazy.Char8 as LB8
41−import qualified Data.HashMap.Strict as HMap
42import qualified Data.Maybe as Maybe
49import qualified Data.Maybe as Maybe
43import qualified Data.Scientific as Scientific
50import qualified Data.Scientific as Scientific
44import Data.Text (Text)
51import Data.Text (Text)
@@ -50,6 +57,15 @@ import qualified Network.HTTP.Client as HC
50import qualified Network.HTTP.Simple as HS
57import qualified Network.HTTP.Simple as HS
51import qualified Network.HTTP.Types as HT
58import qualified Network.HTTP.Types as HT
52
59
60+
61+#if MIN_VERSION_aeson(2,0,0)
62+toList' :: Aeson.Object -> [(Text, Aeson.Value)]
63+toList' = fmap (first Key.toText) . KeyMap.toList
64+#else
65+toList' :: Aeson.Object -> [(Text, Aeson.Value)]
66+toList' = HashMap.toList
67+#endif
68+
53-- | Abstracts the usage of 'Network.HTTP.Simple.httpBS' away,
69-- | Abstracts the usage of 'Network.HTTP.Simple.httpBS' away,
54-- so that it can be used for testing
70-- so that it can be used for testing
55class Monad m => MonadHTTP m where
71class Monad m => MonadHTTP m where
@@ -285,8 +301,10 @@ jsonToFormDataFlat _ Aeson.Null = []
285jsonToFormDataFlat name (Aeson.Number a) = [(name, encodeStrict a)]
301jsonToFormDataFlat name (Aeson.Number a) = [(name, encodeStrict a)]
286jsonToFormDataFlat name (Aeson.String a) = [(name, textToByte a)]
302jsonToFormDataFlat name (Aeson.String a) = [(name, textToByte a)]
287jsonToFormDataFlat name (Aeson.Bool a) = [(name, encodeStrict a)]
303jsonToFormDataFlat name (Aeson.Bool a) = [(name, encodeStrict a)]
304+jsonToFormDataFlat _ (Aeson.Object object) =
288−jsonToFormDataFlat _ (Aeson.Object object) = HMap.toList object >>= uncurry jsonToFormDataFlat . BF.first Just
305+ toList' object >>= uncurry jsonToFormDataFlat . BF.first Just
306+jsonToFormDataFlat name (Aeson.Array vector) =
289−jsonToFormDataFlat name (Aeson.Array vector) = Vector.toList vector >>= jsonToFormDataFlat name
307+ Vector.toList vector >>= jsonToFormDataFlat name
290
308
291-- | creates form data bytestring array
309-- | creates form data bytestring array
292createFormData :: (Aeson.ToJSON a) => a -> [(B8.ByteString, B8.ByteString)]
310createFormData :: (Aeson.ToJSON a) => a -> [(B8.ByteString, B8.ByteString)]
@@ -320,9 +338,9 @@ jsonToFormDataPrefixed prefix (Aeson.Bool False) = [(prefix, "false")]
320jsonToFormDataPrefixed _ Aeson.Null = []
338jsonToFormDataPrefixed _ Aeson.Null = []
321jsonToFormDataPrefixed prefix (Aeson.String a) = [(prefix, a)]
339jsonToFormDataPrefixed prefix (Aeson.String a) = [(prefix, a)]
322jsonToFormDataPrefixed "" (Aeson.Object object) =
340jsonToFormDataPrefixed "" (Aeson.Object object) =
323− HMap.toList object >>= uncurry jsonToFormDataPrefixed
341+ toList' object >>= uncurry jsonToFormDataPrefixed
324jsonToFormDataPrefixed prefix (Aeson.Object object) =
342jsonToFormDataPrefixed prefix (Aeson.Object object) =
325− HMap.toList object >>= (\(x, y) -> jsonToFormDataPrefixed (prefix <> "[" <> x <> "]") y)
343+ toList' object >>= (\(x, y) -> jsonToFormDataPrefixed (prefix <> "[" <> x <> "]") y)
326jsonToFormDataPrefixed prefix (Aeson.Array vector) =
344jsonToFormDataPrefixed prefix (Aeson.Array vector) =
327 Vector.toList vector >>= jsonToFormDataPrefixed (prefix <> "[]")
345 Vector.toList vector >>= jsonToFormDataPrefixed (prefix <> "[]")
328
346
src/MockServer/Types/JsonSchemaBodyMatcher.hs+6−6
@@ -6,20 +6,19 @@
6-- | Contains the types generated from the schema JsonSchemaBodyMatcher
6-- | Contains the types generated from the schema JsonSchemaBodyMatcher
7module MockServer.Types.JsonSchemaBodyMatcher where
7module MockServer.Types.JsonSchemaBodyMatcher where
8
8
9−import qualified Prelude as GHC.Integer.Type
10−import qualified Prelude as GHC.Maybe
11import qualified Control.Monad.Fail
9import qualified Control.Monad.Fail
12import qualified Data.Aeson
10import qualified Data.Aeson
13import qualified Data.Aeson as Data.Aeson.Encoding.Internal
11import qualified Data.Aeson as Data.Aeson.Encoding.Internal
14import qualified Data.Aeson as Data.Aeson.Types
12import qualified Data.Aeson as Data.Aeson.Types
15import qualified Data.Aeson as Data.Aeson.Types.FromJSON
13import qualified Data.Aeson as Data.Aeson.Types.FromJSON
16−import qualified Data.Aeson as Data.Aeson.Types.ToJSON
17import qualified Data.Aeson as Data.Aeson.Types.Internal
14import qualified Data.Aeson as Data.Aeson.Types.Internal
15+import qualified Data.Aeson as Data.Aeson.Types.ToJSON
18import qualified Data.ByteString.Char8
16import qualified Data.ByteString.Char8
19import qualified Data.ByteString.Char8 as Data.ByteString.Internal
17import qualified Data.ByteString.Char8 as Data.ByteString.Internal
20import qualified Data.Foldable
18import qualified Data.Foldable
21import qualified Data.Functor
19import qualified Data.Functor
22import qualified Data.Maybe
20import qualified Data.Maybe
21+import Data.OpenApi.Internal (Schema)
23import qualified Data.Scientific
22import qualified Data.Scientific
24import qualified Data.Text
23import qualified Data.Text
25import qualified Data.Text.Internal
24import qualified Data.Text.Internal
@@ -32,14 +31,15 @@ import qualified GHC.Show
32import qualified GHC.Types
31import qualified GHC.Types
33import qualified MockServer.Common
32import qualified MockServer.Common
34import MockServer.TypeAlias
33import MockServer.TypeAlias
35−import {-# SOURCE #-} MockServer.Types.Http__JsonSchema_OrgDraft_04Schema
34+import qualified Prelude as GHC.Integer.Type
35+import qualified Prelude as GHC.Maybe
36
36
37-- | Defines the object schema located at @components.schemas.JsonSchemaBodyMatcher@ in the specification.
37-- | Defines the object schema located at @components.schemas.JsonSchemaBodyMatcher@ in the specification.
38−--
38+--
39-- json schema body matcher
39-- json schema body matcher
40data JsonSchemaBodyMatcher = JsonSchemaBodyMatcher {
40data JsonSchemaBodyMatcher = JsonSchemaBodyMatcher {
41 -- | jsonSchema
41 -- | jsonSchema
42− jsonSchemaBodyMatcherJsonSchema :: (GHC.Maybe.Maybe Http___json_schema'org_draft_04_schema)
42+ jsonSchemaBodyMatcherJsonSchema :: (GHC.Maybe.Maybe Schema)
43 -- | not
43 -- | not
44 , jsonSchemaBodyMatcherNot :: (GHC.Maybe.Maybe GHC.Types.Bool)
44 , jsonSchemaBodyMatcherNot :: (GHC.Maybe.Maybe GHC.Types.Bool)
45 -- | type
45 -- | type
src/MockServer/Types/StringOrJsonSchema.hs+7−7
@@ -6,20 +6,19 @@
6-- | Contains the types generated from the schema StringOrJsonSchema
6-- | Contains the types generated from the schema StringOrJsonSchema
7module MockServer.Types.StringOrJsonSchema where
7module MockServer.Types.StringOrJsonSchema where
8
8
9−import qualified Prelude as GHC.Integer.Type
10−import qualified Prelude as GHC.Maybe
11import qualified Control.Monad.Fail
9import qualified Control.Monad.Fail
12import qualified Data.Aeson
10import qualified Data.Aeson
13import qualified Data.Aeson as Data.Aeson.Encoding.Internal
11import qualified Data.Aeson as Data.Aeson.Encoding.Internal
14import qualified Data.Aeson as Data.Aeson.Types
12import qualified Data.Aeson as Data.Aeson.Types
15import qualified Data.Aeson as Data.Aeson.Types.FromJSON
13import qualified Data.Aeson as Data.Aeson.Types.FromJSON
16−import qualified Data.Aeson as Data.Aeson.Types.ToJSON
17import qualified Data.Aeson as Data.Aeson.Types.Internal
14import qualified Data.Aeson as Data.Aeson.Types.Internal
15+import qualified Data.Aeson as Data.Aeson.Types.ToJSON
18import qualified Data.ByteString.Char8
16import qualified Data.ByteString.Char8
19import qualified Data.ByteString.Char8 as Data.ByteString.Internal
17import qualified Data.ByteString.Char8 as Data.ByteString.Internal
20import qualified Data.Foldable
18import qualified Data.Foldable
21import qualified Data.Functor
19import qualified Data.Functor
22import qualified Data.Maybe
20import qualified Data.Maybe
21+import Data.OpenApi.Internal (Schema)
23import qualified Data.Scientific
22import qualified Data.Scientific
24import qualified Data.Text
23import qualified Data.Text
25import qualified Data.Text.Internal
24import qualified Data.Text.Internal
@@ -32,11 +31,12 @@ import qualified GHC.Show
32import qualified GHC.Types
31import qualified GHC.Types
33import qualified MockServer.Common
32import qualified MockServer.Common
34import MockServer.TypeAlias
33import MockServer.TypeAlias
35−import {-# SOURCE #-} MockServer.Types.Http__JsonSchema_OrgDraft_04Schema
34+import qualified Prelude as GHC.Integer.Type
35+import qualified Prelude as GHC.Maybe
36
36
37-- | Defines the object schema located at @components.schemas.StringOrJsonSchema.oneOf@ in the specification.
37-- | Defines the object schema located at @components.schemas.StringOrJsonSchema.oneOf@ in the specification.
38−--
38+--
39−--
39+--
40data StringOrJsonSchemaOneOf2 = StringOrJsonSchemaOneOf2 {
40data StringOrJsonSchemaOneOf2 = StringOrJsonSchemaOneOf2 {
41 -- | not
41 -- | not
42 stringOrJsonSchemaOneOf2Not :: (GHC.Maybe.Maybe GHC.Types.Bool)
42 stringOrJsonSchemaOneOf2Not :: (GHC.Maybe.Maybe GHC.Types.Bool)
@@ -45,7 +45,7 @@ data StringOrJsonSchemaOneOf2 = StringOrJsonSchemaOneOf2 {
45 -- | parameterStyle
45 -- | parameterStyle
46 , stringOrJsonSchemaOneOf2ParameterStyle :: (GHC.Maybe.Maybe StringOrJsonSchemaOneOf2ParameterStyle)
46 , stringOrJsonSchemaOneOf2ParameterStyle :: (GHC.Maybe.Maybe StringOrJsonSchemaOneOf2ParameterStyle)
47 -- | schema
47 -- | schema
48− , stringOrJsonSchemaOneOf2Schema :: (GHC.Maybe.Maybe Http___json_schema'org_draft_04_schema)
48+ , stringOrJsonSchemaOneOf2Schema :: (GHC.Maybe.Maybe Schema)
49 -- | value
49 -- | value
50 , stringOrJsonSchemaOneOf2Value :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
50 , stringOrJsonSchemaOneOf2Value :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
51 } deriving (GHC.Show.Show
51 } deriving (GHC.Show.Show