From 9f63c66ff8af590496b73168e8958851d323e5c1 Mon Sep 17 00:00:00 2001 From: Andrii Demydenko Date: Wed, 19 Jul 2023 13:24:58 +0100 Subject: [PATCH] Add description to response headers It's already implemented in same way for request headers, where `Description` is extracted from `mods`. --- src/Servant/OpenApi/Internal.hs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Servant/OpenApi/Internal.hs b/src/Servant/OpenApi/Internal.hs index 7551058..50cd5c8 100644 --- a/src/Servant/OpenApi/Internal.hs +++ b/src/Servant/OpenApi/Internal.hs @@ -447,11 +447,15 @@ instance (Accept c, AllAccept cs) => AllAccept (c ': cs) where class ToResponseHeader h where toResponseHeader :: Proxy h -> (HeaderName, OpenApi.Header) -instance (KnownSymbol sym, ToParamSchema a) => ToResponseHeader (Header sym a) where - toResponseHeader _ = (hname, mempty & schema ?~ hschema) +instance (KnownSymbol sym, ToParamSchema a, KnownSymbol (FoldDescription mods)) => ToResponseHeader (Header' mods sym a) where + toResponseHeader _ = (hname, header) where hname = Text.pack (symbolVal (Proxy :: Proxy sym)) - hschema = Inline $ toParamSchema (Proxy :: Proxy a) + transDesc "" = Nothing + transDesc desc = Just (Text.pack desc) + header = mempty + & description .~ transDesc (reflectDescription (Proxy :: Proxy mods)) + & schema ?~ Inline (toParamSchema (Proxy :: Proxy a)) class AllToResponseHeader hs where toAllResponseHeaders :: Proxy hs -> InsOrdHashMap HeaderName OpenApi.Header