{-# OPTIONS_GHC -Wno-orphans #-}
module Data.OpenApi.Compare.Validate.MediaTypeObject
( Issue (..),
Behave (..),
)
where
import Data.Foldable as F
import Data.Functor
import Data.HList
import Data.HashMap.Strict.InsOrd as IOHM
import Data.Map.Strict as M
import Data.OpenApi
import Data.OpenApi.Compare.Behavior
import Data.OpenApi.Compare.Subtree
import Data.OpenApi.Compare.Validate.Header ()
import Data.OpenApi.Compare.Validate.Products
import Data.OpenApi.Compare.Validate.Schema ()
import Data.String
import Data.Text (Text)
import qualified Data.Text as T
import Network.HTTP.Media (MediaType, mainType, subType)
import Text.Pandoc.Builder
tracedSchema :: Traced MediaTypeObject -> Maybe (Traced (Referenced Schema))
tracedSchema :: Traced MediaTypeObject -> Maybe (Traced (Referenced Schema))
tracedSchema Traced MediaTypeObject
mto = MediaTypeObject -> Maybe (Referenced Schema)
_mediaTypeObjectSchema (Traced MediaTypeObject -> MediaTypeObject
forall (w :: * -> *) a. Comonad w => w a -> a
extract Traced MediaTypeObject
mto) Maybe (Referenced Schema)
-> (Referenced Schema -> Traced (Referenced Schema))
-> Maybe (Traced (Referenced Schema))
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> Trace (Referenced Schema)
-> Referenced Schema -> Traced (Referenced Schema)
forall a. Trace a -> a -> Traced a
traced (Traced MediaTypeObject -> Paths Step TraceRoot MediaTypeObject
forall e (w :: * -> *) a. ComonadEnv e w => w a -> e
ask Traced MediaTypeObject
mto Paths Step TraceRoot MediaTypeObject
-> Paths Step MediaTypeObject (Referenced Schema)
-> Trace (Referenced Schema)
forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> Step MediaTypeObject (Referenced Schema)
-> Paths Step MediaTypeObject (Referenced Schema)
forall k (q :: k -> k -> *) (a :: k) (b :: k).
NiceQuiver q a b =>
q a b -> Paths q a b
step Step MediaTypeObject (Referenced Schema)
MediaTypeSchema)
tracedEncoding :: Traced MediaTypeObject -> InsOrdHashMap Text (Traced Encoding)
tracedEncoding :: Traced MediaTypeObject -> InsOrdHashMap Text (Traced Encoding)
tracedEncoding Traced MediaTypeObject
mto =
(Text -> Encoding -> Traced Encoding)
-> InsOrdHashMap Text Encoding
-> InsOrdHashMap Text (Traced Encoding)
forall k v1 v2.
(k -> v1 -> v2) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2
IOHM.mapWithKey (\Text
k -> Trace Encoding -> Encoding -> Traced Encoding
forall a. Trace a -> a -> Traced a
traced (Traced MediaTypeObject -> Paths Step TraceRoot MediaTypeObject
forall e (w :: * -> *) a. ComonadEnv e w => w a -> e
ask Traced MediaTypeObject
mto Paths Step TraceRoot MediaTypeObject
-> Paths Step MediaTypeObject Encoding -> Trace Encoding
forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> Step MediaTypeObject Encoding
-> Paths Step MediaTypeObject Encoding
forall k (q :: k -> k -> *) (a :: k) (b :: k).
NiceQuiver q a b =>
q a b -> Paths q a b
step (Text -> Step MediaTypeObject Encoding
MediaTypeParamEncoding Text
k))) (InsOrdHashMap Text Encoding
-> InsOrdHashMap Text (Traced Encoding))
-> InsOrdHashMap Text Encoding
-> InsOrdHashMap Text (Traced Encoding)
forall a b. (a -> b) -> a -> b
$
MediaTypeObject -> InsOrdHashMap Text Encoding
_mediaTypeObjectEncoding (MediaTypeObject -> InsOrdHashMap Text Encoding)
-> MediaTypeObject -> InsOrdHashMap Text Encoding
forall a b. (a -> b) -> a -> b
$ Traced MediaTypeObject -> MediaTypeObject
forall (w :: * -> *) a. Comonad w => w a -> a
extract Traced MediaTypeObject
mto
instance Issuable 'PayloadLevel where
data Issue 'PayloadLevel
= MediaTypeSchemaRequired
| MediaEncodingMissing Text
| EncodingNotSupported
deriving stock (Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
(Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool)
-> (Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool)
-> Eq (Issue 'PayloadLevel)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
$c/= :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
== :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
$c== :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
Eq, Eq (Issue 'PayloadLevel)
Eq (Issue 'PayloadLevel)
-> (Issue 'PayloadLevel -> Issue 'PayloadLevel -> Ordering)
-> (Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool)
-> (Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool)
-> (Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool)
-> (Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool)
-> (Issue 'PayloadLevel
-> Issue 'PayloadLevel -> Issue 'PayloadLevel)
-> (Issue 'PayloadLevel
-> Issue 'PayloadLevel -> Issue 'PayloadLevel)
-> Ord (Issue 'PayloadLevel)
Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
Issue 'PayloadLevel -> Issue 'PayloadLevel -> Ordering
Issue 'PayloadLevel -> Issue 'PayloadLevel -> Issue 'PayloadLevel
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Issue 'PayloadLevel
$cmin :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Issue 'PayloadLevel
max :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Issue 'PayloadLevel
$cmax :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Issue 'PayloadLevel
>= :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
$c>= :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
> :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
$c> :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
<= :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
$c<= :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
< :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
$c< :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Bool
compare :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Ordering
$ccompare :: Issue 'PayloadLevel -> Issue 'PayloadLevel -> Ordering
$cp1Ord :: Eq (Issue 'PayloadLevel)
Ord, Int -> Issue 'PayloadLevel -> ShowS
[Issue 'PayloadLevel] -> ShowS
Issue 'PayloadLevel -> String
(Int -> Issue 'PayloadLevel -> ShowS)
-> (Issue 'PayloadLevel -> String)
-> ([Issue 'PayloadLevel] -> ShowS)
-> Show (Issue 'PayloadLevel)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issue 'PayloadLevel] -> ShowS
$cshowList :: [Issue 'PayloadLevel] -> ShowS
show :: Issue 'PayloadLevel -> String
$cshow :: Issue 'PayloadLevel -> String
showsPrec :: Int -> Issue 'PayloadLevel -> ShowS
$cshowsPrec :: Int -> Issue 'PayloadLevel -> ShowS
Show)
issueKind :: Issue 'PayloadLevel -> IssueKind
issueKind = \case
Issue 'PayloadLevel
EncodingNotSupported -> IssueKind
Unsupported
Issue 'PayloadLevel
_ -> IssueKind
CertainIssue
describeIssue :: Orientation -> Issue 'PayloadLevel -> Blocks
describeIssue Orientation
_ Issue 'PayloadLevel
MediaTypeSchemaRequired = Inlines -> Blocks
para Inlines
"Media type expected, but was not specified."
describeIssue Orientation
Forward (MediaEncodingMissing enc) = Inlines -> Blocks
para (Inlines -> Blocks) -> Inlines -> Blocks
forall a b. (a -> b) -> a -> b
$ Inlines
"Media encoding " Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Text -> Inlines
str Text
enc Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Inlines
" has been removed."
describeIssue Orientation
Backward (MediaEncodingMissing enc) = Inlines -> Blocks
para (Inlines -> Blocks) -> Inlines -> Blocks
forall a b. (a -> b) -> a -> b
$ Inlines
"Media encoding " Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Text -> Inlines
str Text
enc Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Inlines
" added."
describeIssue Orientation
_ Issue 'PayloadLevel
EncodingNotSupported = Inlines -> Blocks
para Inlines
"CompaREST does not currently support media encodings other than JSON."
instance Behavable 'PayloadLevel 'SchemaLevel where
data Behave 'PayloadLevel 'SchemaLevel
= PayloadSchema
deriving stock (Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
(Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool)
-> (Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool)
-> Eq (Behave 'PayloadLevel 'SchemaLevel)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
$c/= :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
== :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
$c== :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
Eq, Eq (Behave 'PayloadLevel 'SchemaLevel)
Eq (Behave 'PayloadLevel 'SchemaLevel)
-> (Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Ordering)
-> (Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool)
-> (Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool)
-> (Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool)
-> (Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool)
-> (Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel)
-> (Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel)
-> Ord (Behave 'PayloadLevel 'SchemaLevel)
Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Ordering
Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
$cmin :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
max :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
$cmax :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel
>= :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
$c>= :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
> :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
$c> :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
<= :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
$c<= :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
< :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
$c< :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Bool
compare :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Ordering
$ccompare :: Behave 'PayloadLevel 'SchemaLevel
-> Behave 'PayloadLevel 'SchemaLevel -> Ordering
$cp1Ord :: Eq (Behave 'PayloadLevel 'SchemaLevel)
Ord, Int -> Behave 'PayloadLevel 'SchemaLevel -> ShowS
[Behave 'PayloadLevel 'SchemaLevel] -> ShowS
Behave 'PayloadLevel 'SchemaLevel -> String
(Int -> Behave 'PayloadLevel 'SchemaLevel -> ShowS)
-> (Behave 'PayloadLevel 'SchemaLevel -> String)
-> ([Behave 'PayloadLevel 'SchemaLevel] -> ShowS)
-> Show (Behave 'PayloadLevel 'SchemaLevel)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Behave 'PayloadLevel 'SchemaLevel] -> ShowS
$cshowList :: [Behave 'PayloadLevel 'SchemaLevel] -> ShowS
show :: Behave 'PayloadLevel 'SchemaLevel -> String
$cshow :: Behave 'PayloadLevel 'SchemaLevel -> String
showsPrec :: Int -> Behave 'PayloadLevel 'SchemaLevel -> ShowS
$cshowsPrec :: Int -> Behave 'PayloadLevel 'SchemaLevel -> ShowS
Show)
describeBehavior :: Behave 'PayloadLevel 'SchemaLevel -> Inlines
describeBehavior Behave 'PayloadLevel 'SchemaLevel
PayloadSchema = Inlines
"JSON Schema"
instance Subtree MediaTypeObject where
type SubtreeLevel MediaTypeObject = 'PayloadLevel
type
CheckEnv MediaTypeObject =
'[ MediaType
, ProdCons (Traced (Definitions Schema))
, ProdCons (Traced (Definitions Header))
]
checkStructuralCompatibility :: HList (CheckEnv MediaTypeObject)
-> ProdCons (Traced MediaTypeObject) -> StructuralCompatFormula ()
checkStructuralCompatibility HList (CheckEnv MediaTypeObject)
env ProdCons (Traced MediaTypeObject)
pc = do
HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
-> ProdCons (Maybe (Traced (Referenced Schema)))
-> StructuralCompatFormula ()
forall a (xs :: [*]).
(Subtree a, ReassembleHList xs (CheckEnv a)) =>
HList xs
-> ProdCons (Maybe (Traced a)) -> StructuralCompatFormula ()
structuralMaybe HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
HList (CheckEnv MediaTypeObject)
env (ProdCons (Maybe (Traced (Referenced Schema)))
-> StructuralCompatFormula ())
-> ProdCons (Maybe (Traced (Referenced Schema)))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ Traced MediaTypeObject -> Maybe (Traced (Referenced Schema))
tracedSchema (Traced MediaTypeObject -> Maybe (Traced (Referenced Schema)))
-> ProdCons (Traced MediaTypeObject)
-> ProdCons (Maybe (Traced (Referenced Schema)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced MediaTypeObject)
pc
ProdCons
(EnvT
(Paths Step TraceRoot MediaTypeObject) Identity (Maybe Value))
-> StructuralCompatFormula ()
forall a (w :: * -> *).
(Eq a, Comonad w) =>
ProdCons (w a) -> StructuralCompatFormula ()
structuralEq (ProdCons
(EnvT
(Paths Step TraceRoot MediaTypeObject) Identity (Maybe Value))
-> StructuralCompatFormula ())
-> ProdCons
(EnvT
(Paths Step TraceRoot MediaTypeObject) Identity (Maybe Value))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ (MediaTypeObject -> Maybe Value)
-> Traced MediaTypeObject
-> EnvT
(Paths Step TraceRoot MediaTypeObject) Identity (Maybe Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap MediaTypeObject -> Maybe Value
_mediaTypeObjectExample (Traced MediaTypeObject
-> EnvT
(Paths Step TraceRoot MediaTypeObject) Identity (Maybe Value))
-> ProdCons (Traced MediaTypeObject)
-> ProdCons
(EnvT
(Paths Step TraceRoot MediaTypeObject) Identity (Maybe Value))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced MediaTypeObject)
pc
HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
-> ProdCons (Traced (InsOrdHashMap Text Encoding))
-> StructuralCompatFormula ()
forall k (xs :: [*]) v.
(ReassembleHList (k : xs) (CheckEnv v), Ord k, Subtree v,
Hashable k, Typeable k, Show k) =>
HList xs
-> ProdCons (Traced (InsOrdHashMap k v))
-> StructuralCompatFormula ()
iohmStructural HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
HList (CheckEnv MediaTypeObject)
env (ProdCons (Traced (InsOrdHashMap Text Encoding))
-> StructuralCompatFormula ())
-> ProdCons (Traced (InsOrdHashMap Text Encoding))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Traced' MediaTypeObject (InsOrdHashMap Text Encoding)
-> Traced (InsOrdHashMap Text Encoding)
forall a a' b.
Steppable a a' =>
Step a a' -> Traced' a b -> Traced' a' b
stepTraced Step MediaTypeObject (InsOrdHashMap Text Encoding)
MediaTypeEncodingMapping (Traced' MediaTypeObject (InsOrdHashMap Text Encoding)
-> Traced (InsOrdHashMap Text Encoding))
-> (Traced MediaTypeObject
-> Traced' MediaTypeObject (InsOrdHashMap Text Encoding))
-> Traced MediaTypeObject
-> Traced (InsOrdHashMap Text Encoding)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (MediaTypeObject -> InsOrdHashMap Text Encoding)
-> Traced MediaTypeObject
-> Traced' MediaTypeObject (InsOrdHashMap Text Encoding)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap MediaTypeObject -> InsOrdHashMap Text Encoding
_mediaTypeObjectEncoding (Traced MediaTypeObject -> Traced (InsOrdHashMap Text Encoding))
-> ProdCons (Traced MediaTypeObject)
-> ProdCons (Traced (InsOrdHashMap Text Encoding))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced MediaTypeObject)
pc
pure ()
checkSemanticCompatibility :: HList (CheckEnv MediaTypeObject)
-> Behavior (SubtreeLevel MediaTypeObject)
-> ProdCons (Traced MediaTypeObject)
-> SemanticCompatFormula ()
checkSemanticCompatibility HList (CheckEnv MediaTypeObject)
env Behavior (SubtreeLevel MediaTypeObject)
beh prodCons :: ProdCons (Traced MediaTypeObject)
prodCons@(ProdCons Traced MediaTypeObject
p Traced MediaTypeObject
c) = do
if
| CI ByteString
"multipart" CI ByteString -> CI ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== MediaType -> CI ByteString
mainType MediaType
mediaType -> SemanticCompatFormula ()
checkEncoding
| CI ByteString
"application" CI ByteString -> CI ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== MediaType -> CI ByteString
mainType MediaType
mediaType
Bool -> Bool -> Bool
&& CI ByteString
"x-www-form-urlencoded" CI ByteString -> CI ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== MediaType -> CI ByteString
subType MediaType
mediaType ->
SemanticCompatFormula ()
checkEncoding
| Bool
otherwise -> () -> SemanticCompatFormula ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
Maybe (Traced (Referenced Schema))
-> (Traced (Referenced Schema) -> SemanticCompatFormula ())
-> SemanticCompatFormula ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ (Traced MediaTypeObject -> Maybe (Traced (Referenced Schema))
tracedSchema Traced MediaTypeObject
c) ((Traced (Referenced Schema) -> SemanticCompatFormula ())
-> SemanticCompatFormula ())
-> (Traced (Referenced Schema) -> SemanticCompatFormula ())
-> SemanticCompatFormula ()
forall a b. (a -> b) -> a -> b
$ \Traced (Referenced Schema)
consRef ->
case Traced MediaTypeObject -> Maybe (Traced (Referenced Schema))
tracedSchema Traced MediaTypeObject
p of
Maybe (Traced (Referenced Schema))
Nothing -> Paths Behave 'APILevel 'PayloadLevel
-> Issue 'PayloadLevel -> SemanticCompatFormula ()
forall (l :: BehaviorLevel)
(q :: BehaviorLevel -> BehaviorLevel -> *) (r :: BehaviorLevel) a.
Issuable l =>
Paths q r l -> Issue l -> CompatFormula' q AnIssue r a
issueAt Paths Behave 'APILevel 'PayloadLevel
Behavior (SubtreeLevel MediaTypeObject)
beh Issue 'PayloadLevel
MediaTypeSchemaRequired
Just Traced (Referenced Schema)
prodRef ->
Behavior (SubtreeLevel (Referenced Schema))
-> HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
-> ProdCons (Traced (Referenced Schema))
-> SemanticCompatFormula ()
forall t (xs :: [*]).
(ReassembleHList xs (CheckEnv t), Subtree t) =>
Behavior (SubtreeLevel t)
-> HList xs -> ProdCons (Traced t) -> SemanticCompatFormula ()
checkCompatibility (Paths Behave 'APILevel 'PayloadLevel
Behavior (SubtreeLevel MediaTypeObject)
beh Paths Behave 'APILevel 'PayloadLevel
-> Paths Behave 'PayloadLevel 'SchemaLevel
-> Paths Behave 'APILevel 'SchemaLevel
forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> Behave 'PayloadLevel 'SchemaLevel
-> Paths Behave 'PayloadLevel 'SchemaLevel
forall k (q :: k -> k -> *) (a :: k) (b :: k).
NiceQuiver q a b =>
q a b -> Paths q a b
step Behave 'PayloadLevel 'SchemaLevel
PayloadSchema) HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
HList (CheckEnv MediaTypeObject)
env (ProdCons (Traced (Referenced Schema)) -> SemanticCompatFormula ())
-> ProdCons (Traced (Referenced Schema))
-> SemanticCompatFormula ()
forall a b. (a -> b) -> a -> b
$
Traced (Referenced Schema)
-> Traced (Referenced Schema)
-> ProdCons (Traced (Referenced Schema))
forall a. a -> a -> ProdCons a
ProdCons Traced (Referenced Schema)
prodRef Traced (Referenced Schema)
consRef
pure ()
where
mediaType :: MediaType
mediaType = HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
-> MediaType
forall x (xs :: [*]) (t :: Bool). Has' x xs t => HList xs -> x
getH @MediaType HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
HList (CheckEnv MediaTypeObject)
env
checkEncoding :: SemanticCompatFormula ()
checkEncoding =
let
getEncoding :: Traced MediaTypeObject -> Map Text (ProductLike (Traced Encoding))
getEncoding Traced MediaTypeObject
mt =
[(Text, ProductLike (Traced Encoding))]
-> Map Text (ProductLike (Traced Encoding))
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList ([(Text, ProductLike (Traced Encoding))]
-> Map Text (ProductLike (Traced Encoding)))
-> [(Text, ProductLike (Traced Encoding))]
-> Map Text (ProductLike (Traced Encoding))
forall a b. (a -> b) -> a -> b
$
(InsOrdHashMap Text (Traced Encoding) -> [(Text, Traced Encoding)]
forall k v. InsOrdHashMap k v -> [(k, v)]
IOHM.toList (InsOrdHashMap Text (Traced Encoding) -> [(Text, Traced Encoding)])
-> InsOrdHashMap Text (Traced Encoding)
-> [(Text, Traced Encoding)]
forall a b. (a -> b) -> a -> b
$ Traced MediaTypeObject -> InsOrdHashMap Text (Traced Encoding)
tracedEncoding Traced MediaTypeObject
mt) [(Text, Traced Encoding)]
-> ((Text, Traced Encoding)
-> (Text, ProductLike (Traced Encoding)))
-> [(Text, ProductLike (Traced Encoding))]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \(Text
k, Traced Encoding
enc) ->
( Text
k
, ProductLike :: forall a. a -> Bool -> ProductLike a
ProductLike
{ $sel:productValue:ProductLike :: Traced Encoding
productValue = Traced Encoding
enc
, $sel:required:ProductLike :: Bool
required = Bool
True
}
)
encProdCons :: ProdCons (Map Text (ProductLike (Traced Encoding)))
encProdCons = Traced MediaTypeObject -> Map Text (ProductLike (Traced Encoding))
getEncoding (Traced MediaTypeObject
-> Map Text (ProductLike (Traced Encoding)))
-> ProdCons (Traced MediaTypeObject)
-> ProdCons (Map Text (ProductLike (Traced Encoding)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced MediaTypeObject)
prodCons
in Paths Behave 'APILevel 'PayloadLevel
-> (Text -> Issue 'PayloadLevel)
-> (Text -> ProdCons (Traced Encoding) -> SemanticCompatFormula ())
-> ProdCons (Map Text (ProductLike (Traced Encoding)))
-> SemanticCompatFormula ()
forall k (l :: BehaviorLevel)
(q :: BehaviorLevel -> BehaviorLevel -> *) (r :: BehaviorLevel) t.
(Ord k, Issuable l) =>
Paths q r l
-> (k -> Issue l)
-> (k -> ProdCons t -> CompatFormula' q AnIssue r ())
-> ProdCons (Map k (ProductLike t))
-> CompatFormula' q AnIssue r ()
checkProducts
Paths Behave 'APILevel 'PayloadLevel
Behavior (SubtreeLevel MediaTypeObject)
beh
Text -> Issue 'PayloadLevel
MediaEncodingMissing
((ProdCons (Traced Encoding) -> SemanticCompatFormula ())
-> Text -> ProdCons (Traced Encoding) -> SemanticCompatFormula ()
forall a b. a -> b -> a
const ((ProdCons (Traced Encoding) -> SemanticCompatFormula ())
-> Text -> ProdCons (Traced Encoding) -> SemanticCompatFormula ())
-> (ProdCons (Traced Encoding) -> SemanticCompatFormula ())
-> Text
-> ProdCons (Traced Encoding)
-> SemanticCompatFormula ()
forall a b. (a -> b) -> a -> b
$ Behavior (SubtreeLevel Encoding)
-> HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
-> ProdCons (Traced Encoding)
-> SemanticCompatFormula ()
forall t (xs :: [*]).
(ReassembleHList xs (CheckEnv t), Subtree t) =>
Behavior (SubtreeLevel t)
-> HList xs -> ProdCons (Traced t) -> SemanticCompatFormula ()
checkCompatibility Behavior (SubtreeLevel MediaTypeObject)
Behavior (SubtreeLevel Encoding)
beh HList
'[MediaType, ProdCons (Traced (Definitions Schema)),
ProdCons (Traced (Definitions Header))]
HList (CheckEnv MediaTypeObject)
env)
ProdCons (Map Text (ProductLike (Traced Encoding)))
encProdCons
instance Subtree Encoding where
type SubtreeLevel Encoding = 'PayloadLevel
type
CheckEnv Encoding =
'[ ProdCons (Traced (Definitions Header))
, ProdCons (Traced (Definitions Schema))
]
checkStructuralCompatibility :: HList (CheckEnv Encoding)
-> ProdCons (Traced Encoding) -> StructuralCompatFormula ()
checkStructuralCompatibility HList (CheckEnv Encoding)
env ProdCons (Traced Encoding)
pc = do
ProdCons (EnvT (Trace Encoding) Identity (Maybe MediaType))
-> StructuralCompatFormula ()
forall a (w :: * -> *).
(Eq a, Comonad w) =>
ProdCons (w a) -> StructuralCompatFormula ()
structuralEq (ProdCons (EnvT (Trace Encoding) Identity (Maybe MediaType))
-> StructuralCompatFormula ())
-> ProdCons (EnvT (Trace Encoding) Identity (Maybe MediaType))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ (Encoding -> Maybe MediaType)
-> Traced Encoding
-> EnvT (Trace Encoding) Identity (Maybe MediaType)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Encoding -> Maybe MediaType
_encodingContentType (Traced Encoding
-> EnvT (Trace Encoding) Identity (Maybe MediaType))
-> ProdCons (Traced Encoding)
-> ProdCons (EnvT (Trace Encoding) Identity (Maybe MediaType))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced Encoding)
pc
HList
'[ProdCons (Traced (Definitions Header)),
ProdCons (Traced (Definitions Schema))]
-> ProdCons (Traced (InsOrdHashMap Text (Referenced Header)))
-> StructuralCompatFormula ()
forall k (xs :: [*]) v.
(ReassembleHList (k : xs) (CheckEnv v), Ord k, Subtree v,
Hashable k, Typeable k, Show k) =>
HList xs
-> ProdCons (Traced (InsOrdHashMap k v))
-> StructuralCompatFormula ()
iohmStructural HList
'[ProdCons (Traced (Definitions Header)),
ProdCons (Traced (Definitions Schema))]
HList (CheckEnv Encoding)
env (ProdCons (Traced (InsOrdHashMap Text (Referenced Header)))
-> StructuralCompatFormula ())
-> ProdCons (Traced (InsOrdHashMap Text (Referenced Header)))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Traced' Encoding (InsOrdHashMap Text (Referenced Header))
-> Traced (InsOrdHashMap Text (Referenced Header))
forall a a' b.
Steppable a a' =>
Step a a' -> Traced' a b -> Traced' a' b
stepTraced Step Encoding (InsOrdHashMap Text (Referenced Header))
EncodingHeaderStep (Traced' Encoding (InsOrdHashMap Text (Referenced Header))
-> Traced (InsOrdHashMap Text (Referenced Header)))
-> (Traced Encoding
-> Traced' Encoding (InsOrdHashMap Text (Referenced Header)))
-> Traced Encoding
-> Traced (InsOrdHashMap Text (Referenced Header))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Encoding -> InsOrdHashMap Text (Referenced Header))
-> Traced Encoding
-> Traced' Encoding (InsOrdHashMap Text (Referenced Header))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Encoding -> InsOrdHashMap Text (Referenced Header)
_encodingHeaders (Traced Encoding
-> Traced (InsOrdHashMap Text (Referenced Header)))
-> ProdCons (Traced Encoding)
-> ProdCons (Traced (InsOrdHashMap Text (Referenced Header)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced Encoding)
pc
ProdCons (EnvT (Trace Encoding) Identity (Maybe Style))
-> StructuralCompatFormula ()
forall a (w :: * -> *).
(Eq a, Comonad w) =>
ProdCons (w a) -> StructuralCompatFormula ()
structuralEq (ProdCons (EnvT (Trace Encoding) Identity (Maybe Style))
-> StructuralCompatFormula ())
-> ProdCons (EnvT (Trace Encoding) Identity (Maybe Style))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ (Encoding -> Maybe Style)
-> Traced Encoding -> EnvT (Trace Encoding) Identity (Maybe Style)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Encoding -> Maybe Style
_encodingStyle (Traced Encoding -> EnvT (Trace Encoding) Identity (Maybe Style))
-> ProdCons (Traced Encoding)
-> ProdCons (EnvT (Trace Encoding) Identity (Maybe Style))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced Encoding)
pc
ProdCons (EnvT (Trace Encoding) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a (w :: * -> *).
(Eq a, Comonad w) =>
ProdCons (w a) -> StructuralCompatFormula ()
structuralEq (ProdCons (EnvT (Trace Encoding) Identity (Maybe Bool))
-> StructuralCompatFormula ())
-> ProdCons (EnvT (Trace Encoding) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ (Encoding -> Maybe Bool)
-> Traced Encoding -> EnvT (Trace Encoding) Identity (Maybe Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Encoding -> Maybe Bool
_encodingExplode (Traced Encoding -> EnvT (Trace Encoding) Identity (Maybe Bool))
-> ProdCons (Traced Encoding)
-> ProdCons (EnvT (Trace Encoding) Identity (Maybe Bool))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced Encoding)
pc
ProdCons (EnvT (Trace Encoding) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a (w :: * -> *).
(Eq a, Comonad w) =>
ProdCons (w a) -> StructuralCompatFormula ()
structuralEq (ProdCons (EnvT (Trace Encoding) Identity (Maybe Bool))
-> StructuralCompatFormula ())
-> ProdCons (EnvT (Trace Encoding) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ (Encoding -> Maybe Bool)
-> Traced Encoding -> EnvT (Trace Encoding) Identity (Maybe Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Encoding -> Maybe Bool
_encodingAllowReserved (Traced Encoding -> EnvT (Trace Encoding) Identity (Maybe Bool))
-> ProdCons (Traced Encoding)
-> ProdCons (EnvT (Trace Encoding) Identity (Maybe Bool))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced Encoding)
pc
pure ()
checkSemanticCompatibility :: HList (CheckEnv Encoding)
-> Behavior (SubtreeLevel Encoding)
-> ProdCons (Traced Encoding)
-> SemanticCompatFormula ()
checkSemanticCompatibility HList (CheckEnv Encoding)
_env Behavior (SubtreeLevel Encoding)
beh ProdCons (Traced Encoding)
_pc =
Paths Behave 'APILevel 'PayloadLevel
-> Issue 'PayloadLevel -> SemanticCompatFormula ()
forall (l :: BehaviorLevel)
(q :: BehaviorLevel -> BehaviorLevel -> *) (r :: BehaviorLevel) a.
Issuable l =>
Paths q r l -> Issue l -> CompatFormula' q AnIssue r a
issueAt Paths Behave 'APILevel 'PayloadLevel
Behavior (SubtreeLevel Encoding)
beh Issue 'PayloadLevel
EncodingNotSupported
instance Steppable MediaTypeObject (Referenced Schema) where
data Step MediaTypeObject (Referenced Schema) = MediaTypeSchema
deriving stock (Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
(Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool)
-> (Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool)
-> Eq (Step MediaTypeObject (Referenced Schema))
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
$c/= :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
== :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
$c== :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
Eq, Eq (Step MediaTypeObject (Referenced Schema))
Eq (Step MediaTypeObject (Referenced Schema))
-> (Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Ordering)
-> (Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool)
-> (Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool)
-> (Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool)
-> (Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool)
-> (Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema))
-> (Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema))
-> Ord (Step MediaTypeObject (Referenced Schema))
Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Ordering
Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
$cmin :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
max :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
$cmax :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema)
>= :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
$c>= :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
> :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
$c> :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
<= :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
$c<= :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
< :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
$c< :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Bool
compare :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Ordering
$ccompare :: Step MediaTypeObject (Referenced Schema)
-> Step MediaTypeObject (Referenced Schema) -> Ordering
$cp1Ord :: Eq (Step MediaTypeObject (Referenced Schema))
Ord, Int -> Step MediaTypeObject (Referenced Schema) -> ShowS
[Step MediaTypeObject (Referenced Schema)] -> ShowS
Step MediaTypeObject (Referenced Schema) -> String
(Int -> Step MediaTypeObject (Referenced Schema) -> ShowS)
-> (Step MediaTypeObject (Referenced Schema) -> String)
-> ([Step MediaTypeObject (Referenced Schema)] -> ShowS)
-> Show (Step MediaTypeObject (Referenced Schema))
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Step MediaTypeObject (Referenced Schema)] -> ShowS
$cshowList :: [Step MediaTypeObject (Referenced Schema)] -> ShowS
show :: Step MediaTypeObject (Referenced Schema) -> String
$cshow :: Step MediaTypeObject (Referenced Schema) -> String
showsPrec :: Int -> Step MediaTypeObject (Referenced Schema) -> ShowS
$cshowsPrec :: Int -> Step MediaTypeObject (Referenced Schema) -> ShowS
Show)
instance Steppable MediaTypeObject (Definitions Encoding) where
data Step MediaTypeObject (Definitions Encoding) = MediaTypeEncodingMapping
deriving stock (Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
(Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool)
-> (Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool)
-> Eq (Step MediaTypeObject (InsOrdHashMap Text Encoding))
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
$c/= :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
== :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
$c== :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
Eq, Eq (Step MediaTypeObject (InsOrdHashMap Text Encoding))
Eq (Step MediaTypeObject (InsOrdHashMap Text Encoding))
-> (Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Ordering)
-> (Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool)
-> (Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool)
-> (Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool)
-> (Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool)
-> (Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding))
-> (Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding))
-> Ord (Step MediaTypeObject (InsOrdHashMap Text Encoding))
Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Ordering
Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
$cmin :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
max :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
$cmax :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding)
>= :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
$c>= :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
> :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
$c> :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
<= :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
$c<= :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
< :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
$c< :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Bool
compare :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Ordering
$ccompare :: Step MediaTypeObject (InsOrdHashMap Text Encoding)
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> Ordering
$cp1Ord :: Eq (Step MediaTypeObject (InsOrdHashMap Text Encoding))
Ord, Int -> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> ShowS
[Step MediaTypeObject (InsOrdHashMap Text Encoding)] -> ShowS
Step MediaTypeObject (InsOrdHashMap Text Encoding) -> String
(Int
-> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> ShowS)
-> (Step MediaTypeObject (InsOrdHashMap Text Encoding) -> String)
-> ([Step MediaTypeObject (InsOrdHashMap Text Encoding)] -> ShowS)
-> Show (Step MediaTypeObject (InsOrdHashMap Text Encoding))
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Step MediaTypeObject (InsOrdHashMap Text Encoding)] -> ShowS
$cshowList :: [Step MediaTypeObject (InsOrdHashMap Text Encoding)] -> ShowS
show :: Step MediaTypeObject (InsOrdHashMap Text Encoding) -> String
$cshow :: Step MediaTypeObject (InsOrdHashMap Text Encoding) -> String
showsPrec :: Int -> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> ShowS
$cshowsPrec :: Int -> Step MediaTypeObject (InsOrdHashMap Text Encoding) -> ShowS
Show)
instance Steppable MediaTypeObject Encoding where
data Step MediaTypeObject Encoding = MediaTypeParamEncoding Text
deriving stock (Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
(Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool)
-> (Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool)
-> Eq (Step MediaTypeObject Encoding)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
$c/= :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
== :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
$c== :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
Eq, Eq (Step MediaTypeObject Encoding)
Eq (Step MediaTypeObject Encoding)
-> (Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Ordering)
-> (Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool)
-> (Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool)
-> (Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool)
-> (Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool)
-> (Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Step MediaTypeObject Encoding)
-> (Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Step MediaTypeObject Encoding)
-> Ord (Step MediaTypeObject Encoding)
Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Ordering
Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Step MediaTypeObject Encoding
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Step MediaTypeObject Encoding
$cmin :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Step MediaTypeObject Encoding
max :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Step MediaTypeObject Encoding
$cmax :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Step MediaTypeObject Encoding
>= :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
$c>= :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
> :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
$c> :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
<= :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
$c<= :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
< :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
$c< :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Bool
compare :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Ordering
$ccompare :: Step MediaTypeObject Encoding
-> Step MediaTypeObject Encoding -> Ordering
$cp1Ord :: Eq (Step MediaTypeObject Encoding)
Ord, Int -> Step MediaTypeObject Encoding -> ShowS
[Step MediaTypeObject Encoding] -> ShowS
Step MediaTypeObject Encoding -> String
(Int -> Step MediaTypeObject Encoding -> ShowS)
-> (Step MediaTypeObject Encoding -> String)
-> ([Step MediaTypeObject Encoding] -> ShowS)
-> Show (Step MediaTypeObject Encoding)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Step MediaTypeObject Encoding] -> ShowS
$cshowList :: [Step MediaTypeObject Encoding] -> ShowS
show :: Step MediaTypeObject Encoding -> String
$cshow :: Step MediaTypeObject Encoding -> String
showsPrec :: Int -> Step MediaTypeObject Encoding -> ShowS
$cshowsPrec :: Int -> Step MediaTypeObject Encoding -> ShowS
Show)
instance Steppable Encoding (Definitions (Referenced Header)) where
data Step Encoding (Definitions (Referenced Header)) =
deriving stock (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
(Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool)
-> (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool)
-> Eq (Step Encoding (InsOrdHashMap Text (Referenced Header)))
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
$c/= :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
== :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
$c== :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
Eq, Eq (Step Encoding (InsOrdHashMap Text (Referenced Header)))
Eq (Step Encoding (InsOrdHashMap Text (Referenced Header)))
-> (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Ordering)
-> (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool)
-> (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool)
-> (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool)
-> (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool)
-> (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)))
-> (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)))
-> Ord (Step Encoding (InsOrdHashMap Text (Referenced Header)))
Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Ordering
Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
$cmin :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
max :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
$cmax :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
>= :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
$c>= :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
> :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
$c> :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
<= :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
$c<= :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
< :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
$c< :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> Bool
compare :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Ordering
$ccompare :: Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Step Encoding (InsOrdHashMap Text (Referenced Header))
-> Ordering
$cp1Ord :: Eq (Step Encoding (InsOrdHashMap Text (Referenced Header)))
Ord, Int
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> ShowS
[Step Encoding (InsOrdHashMap Text (Referenced Header))] -> ShowS
Step Encoding (InsOrdHashMap Text (Referenced Header)) -> String
(Int
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> ShowS)
-> (Step Encoding (InsOrdHashMap Text (Referenced Header))
-> String)
-> ([Step Encoding (InsOrdHashMap Text (Referenced Header))]
-> ShowS)
-> Show (Step Encoding (InsOrdHashMap Text (Referenced Header)))
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Step Encoding (InsOrdHashMap Text (Referenced Header))] -> ShowS
$cshowList :: [Step Encoding (InsOrdHashMap Text (Referenced Header))] -> ShowS
show :: Step Encoding (InsOrdHashMap Text (Referenced Header)) -> String
$cshow :: Step Encoding (InsOrdHashMap Text (Referenced Header)) -> String
showsPrec :: Int
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> ShowS
$cshowsPrec :: Int
-> Step Encoding (InsOrdHashMap Text (Referenced Header)) -> ShowS
Show)
instance Behavable 'OperationLevel 'ResponseLevel where
data Behave 'OperationLevel 'ResponseLevel
= WithStatusCode HttpStatusCode
deriving stock (Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
(Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool)
-> (Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool)
-> Eq (Behave 'OperationLevel 'ResponseLevel)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
$c/= :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
== :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
$c== :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
Eq, Eq (Behave 'OperationLevel 'ResponseLevel)
Eq (Behave 'OperationLevel 'ResponseLevel)
-> (Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Ordering)
-> (Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool)
-> (Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool)
-> (Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool)
-> (Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool)
-> (Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel)
-> (Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel)
-> Ord (Behave 'OperationLevel 'ResponseLevel)
Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Ordering
Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
$cmin :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
max :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
$cmax :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel
>= :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
$c>= :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
> :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
$c> :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
<= :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
$c<= :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
< :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
$c< :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Bool
compare :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Ordering
$ccompare :: Behave 'OperationLevel 'ResponseLevel
-> Behave 'OperationLevel 'ResponseLevel -> Ordering
$cp1Ord :: Eq (Behave 'OperationLevel 'ResponseLevel)
Ord, Int -> Behave 'OperationLevel 'ResponseLevel -> ShowS
[Behave 'OperationLevel 'ResponseLevel] -> ShowS
Behave 'OperationLevel 'ResponseLevel -> String
(Int -> Behave 'OperationLevel 'ResponseLevel -> ShowS)
-> (Behave 'OperationLevel 'ResponseLevel -> String)
-> ([Behave 'OperationLevel 'ResponseLevel] -> ShowS)
-> Show (Behave 'OperationLevel 'ResponseLevel)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Behave 'OperationLevel 'ResponseLevel] -> ShowS
$cshowList :: [Behave 'OperationLevel 'ResponseLevel] -> ShowS
show :: Behave 'OperationLevel 'ResponseLevel -> String
$cshow :: Behave 'OperationLevel 'ResponseLevel -> String
showsPrec :: Int -> Behave 'OperationLevel 'ResponseLevel -> ShowS
$cshowsPrec :: Int -> Behave 'OperationLevel 'ResponseLevel -> ShowS
Show)
describeBehavior :: Behave 'OperationLevel 'ResponseLevel -> Inlines
describeBehavior (WithStatusCode c) = Inlines
"Response code " Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> (String -> Inlines
forall a. IsString a => String -> a
fromString (String -> Inlines) -> (Int -> String) -> Int -> Inlines
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> String
forall a. Show a => a -> String
show (Int -> Inlines) -> Int -> Inlines
forall a b. (a -> b) -> a -> b
$ Int
c)
instance Issuable 'OperationLevel where
data Issue 'OperationLevel
= ConsumerDoesntHaveResponseCode HttpStatusCode
| ParamNotMatched Text
| PathFragmentNotMatched Int
| NoRequestBody
deriving stock (Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
(Issue 'OperationLevel -> Issue 'OperationLevel -> Bool)
-> (Issue 'OperationLevel -> Issue 'OperationLevel -> Bool)
-> Eq (Issue 'OperationLevel)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
$c/= :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
== :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
$c== :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
Eq, Eq (Issue 'OperationLevel)
Eq (Issue 'OperationLevel)
-> (Issue 'OperationLevel -> Issue 'OperationLevel -> Ordering)
-> (Issue 'OperationLevel -> Issue 'OperationLevel -> Bool)
-> (Issue 'OperationLevel -> Issue 'OperationLevel -> Bool)
-> (Issue 'OperationLevel -> Issue 'OperationLevel -> Bool)
-> (Issue 'OperationLevel -> Issue 'OperationLevel -> Bool)
-> (Issue 'OperationLevel
-> Issue 'OperationLevel -> Issue 'OperationLevel)
-> (Issue 'OperationLevel
-> Issue 'OperationLevel -> Issue 'OperationLevel)
-> Ord (Issue 'OperationLevel)
Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
Issue 'OperationLevel -> Issue 'OperationLevel -> Ordering
Issue 'OperationLevel
-> Issue 'OperationLevel -> Issue 'OperationLevel
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Issue 'OperationLevel
-> Issue 'OperationLevel -> Issue 'OperationLevel
$cmin :: Issue 'OperationLevel
-> Issue 'OperationLevel -> Issue 'OperationLevel
max :: Issue 'OperationLevel
-> Issue 'OperationLevel -> Issue 'OperationLevel
$cmax :: Issue 'OperationLevel
-> Issue 'OperationLevel -> Issue 'OperationLevel
>= :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
$c>= :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
> :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
$c> :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
<= :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
$c<= :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
< :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
$c< :: Issue 'OperationLevel -> Issue 'OperationLevel -> Bool
compare :: Issue 'OperationLevel -> Issue 'OperationLevel -> Ordering
$ccompare :: Issue 'OperationLevel -> Issue 'OperationLevel -> Ordering
$cp1Ord :: Eq (Issue 'OperationLevel)
Ord, Int -> Issue 'OperationLevel -> ShowS
[Issue 'OperationLevel] -> ShowS
Issue 'OperationLevel -> String
(Int -> Issue 'OperationLevel -> ShowS)
-> (Issue 'OperationLevel -> String)
-> ([Issue 'OperationLevel] -> ShowS)
-> Show (Issue 'OperationLevel)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issue 'OperationLevel] -> ShowS
$cshowList :: [Issue 'OperationLevel] -> ShowS
show :: Issue 'OperationLevel -> String
$cshow :: Issue 'OperationLevel -> String
showsPrec :: Int -> Issue 'OperationLevel -> ShowS
$cshowsPrec :: Int -> Issue 'OperationLevel -> ShowS
Show)
issueKind :: Issue 'OperationLevel -> IssueKind
issueKind = \case
Issue 'OperationLevel
_ -> IssueKind
CertainIssue
describeIssue :: Orientation -> Issue 'OperationLevel -> Blocks
describeIssue Orientation
Forward (ConsumerDoesntHaveResponseCode c) =
Inlines -> Blocks
para (Inlines -> Blocks) -> Inlines -> Blocks
forall a b. (a -> b) -> a -> b
$ Inlines
"Response code " Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> (Text -> Inlines
str (Text -> Inlines) -> (Int -> Text) -> Int -> Inlines
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (Int -> String) -> Int -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> String
forall a. Show a => a -> String
show (Int -> Inlines) -> Int -> Inlines
forall a b. (a -> b) -> a -> b
$ Int
c) Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Inlines
" has been removed."
describeIssue Orientation
Backward (ConsumerDoesntHaveResponseCode c) =
Inlines -> Blocks
para (Inlines -> Blocks) -> Inlines -> Blocks
forall a b. (a -> b) -> a -> b
$ Inlines
"Response code " Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> (Text -> Inlines
str (Text -> Inlines) -> (Int -> Text) -> Int -> Inlines
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (Int -> String) -> Int -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> String
forall a. Show a => a -> String
show (Int -> Inlines) -> Int -> Inlines
forall a b. (a -> b) -> a -> b
$ Int
c) Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Inlines
" has been added."
describeIssue Orientation
Forward (ParamNotMatched param) =
Inlines -> Blocks
para (Inlines -> Blocks) -> Inlines -> Blocks
forall a b. (a -> b) -> a -> b
$ Inlines
"Parameter " Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Text -> Inlines
code Text
param Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Inlines
" has become required."
describeIssue Orientation
Backward (ParamNotMatched param) =
Inlines -> Blocks
para (Inlines -> Blocks) -> Inlines -> Blocks
forall a b. (a -> b) -> a -> b
$ Inlines
"Parameter " Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Text -> Inlines
code Text
param Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Inlines
" is no longer required."
describeIssue Orientation
_ (PathFragmentNotMatched i) =
Inlines -> Blocks
para (Inlines -> Blocks) -> Inlines -> Blocks
forall a b. (a -> b) -> a -> b
$ Inlines
"Path fragment " Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> (Text -> Inlines
str (Text -> Inlines) -> (Int -> Text) -> Int -> Inlines
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (Int -> String) -> Int -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> String
forall a. Show a => a -> String
show (Int -> Inlines) -> Int -> Inlines
forall a b. (a -> b) -> a -> b
$ Int
i) Inlines -> Inlines -> Inlines
forall a. Semigroup a => a -> a -> a
<> Inlines
" not matched."
describeIssue Orientation
Forward Issue 'OperationLevel
NoRequestBody = Inlines -> Blocks
para Inlines
"Request body has been added."
describeIssue Orientation
Backward Issue 'OperationLevel
NoRequestBody = Inlines -> Blocks
para Inlines
"Request body has been removed."