12
12
{-# LANGUAGE TupleSections #-}
13
13
{-# LANGUAGE AllowAmbiguousTypes #-}
14
14
{-# LANGUAGE MultiParamTypeClasses #-}
15
- #if __GLASGOW_HASKELL__ >= 806
16
15
{-# LANGUAGE UndecidableInstances #-}
17
- #endif
18
16
{-# OPTIONS_GHC -Wno-orphans #-}
19
17
module Servant.OpenApi.Internal where
20
18
@@ -473,6 +471,9 @@ instance AllToResponseHeader hs => AllToResponseHeader (HList hs) where
473
471
474
472
type DeclareDefinition = Declare (Definitions Schema )
475
473
474
+ class IsSwaggerResponse a where
475
+ responseSwagger :: DeclareDefinition Response
476
+
476
477
instance
477
478
(AllToResponseHeader hs , IsSwaggerResponse r ) =>
478
479
IsSwaggerResponse (WithHeaders hs a r )
@@ -482,12 +483,6 @@ instance
482
483
(headers .~ fmap Inline (toAllResponseHeaders (Proxy @ hs )))
483
484
(responseSwagger @ r )
484
485
485
- class IsSwaggerResponseList (as :: [Type ]) where
486
- responseListSwagger :: DeclareDefinition (InsOrdHashMap HttpStatusCode Response )
487
-
488
- class IsSwaggerResponse a where
489
- responseSwagger :: DeclareDefinition Response
490
-
491
486
simpleResponseSwagger :: forall a cs desc . (ToSchema a , KnownSymbol desc , AllMime cs ) => DeclareDefinition Response
492
487
simpleResponseSwagger = do
493
488
ref <- declareSchemaRef (Proxy @ a )
@@ -508,9 +503,6 @@ instance
508
503
-- Defaulting this to JSON, as openapi3 needs something to map a schema against.
509
504
responseSwagger = simpleResponseSwagger @ a @ '[JSON ] @ desc
510
505
511
- instance IsSwaggerResponseList '[] where
512
- responseListSwagger = pure mempty
513
-
514
506
instance
515
507
(KnownSymbol desc , ToSchema a , Accept ct ) =>
516
508
IsSwaggerResponse (RespondAs (ct :: Type ) s desc a )
@@ -526,6 +518,12 @@ instance
526
518
mempty
527
519
& description .~ Text. pack (symbolVal (Proxy @ desc ))
528
520
521
+ class IsSwaggerResponseList (as :: [Type ]) where
522
+ responseListSwagger :: DeclareDefinition (InsOrdHashMap HttpStatusCode Response )
523
+
524
+ instance IsSwaggerResponseList '[] where
525
+ responseListSwagger = pure mempty
526
+
529
527
instance
530
528
( IsSwaggerResponse a ,
531
529
KnownNat (Server. ResponseStatus a ),
0 commit comments