From dcf720db2e33889a1ad45a7a8b3c731507fbbfd8 Mon Sep 17 00:00:00 2001 From: Devin Lehmacher Date: Fri, 4 Feb 2022 17:16:25 -0800 Subject: [PATCH] support UVerb + Fragment --- lib/Servant/Ekg.hs | 13 +++++++++++++ servant-ekg.cabal | 18 +++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/lib/Servant/Ekg.hs b/lib/Servant/Ekg.hs index 5676aa5..c50c360 100644 --- a/lib/Servant/Ekg.hs +++ b/lib/Servant/Ekg.hs @@ -117,9 +117,11 @@ instance HasEndpoint (sub :: *) => HasEndpoint (Header' mods h a :> sub) where getEndpoint _ = getEndpoint (Proxy :: Proxy sub) enumerateEndpoints _ = enumerateEndpoints (Proxy :: Proxy sub) +#if MIN_VERSION_servant(0,18,2) instance HasEndpoint (sub :: *) => HasEndpoint (Fragment a :> sub) where getEndpoint _ = getEndpoint (Proxy :: Proxy sub) enumerateEndpoints _ = enumerateEndpoints (Proxy :: Proxy sub) +#endif instance HasEndpoint (sub :: *) => HasEndpoint (QueryParam' mods (h :: Symbol) a :> sub) where getEndpoint _ = getEndpoint (Proxy :: Proxy sub) @@ -183,6 +185,17 @@ instance ReflectMethod method => HasEndpoint (NoContentVerb method) where where method = reflectMethod (Proxy :: Proxy method) #endif +#if MIN_VERSION_servant(0,18,1) +instance ReflectMethod method => HasEndpoint (UVerb method contentType as) where + getEndpoint _ req = case pathInfo req of + [] | requestMethod req == method -> Just (APIEndpoint [] method) + _ -> Nothing + where method = reflectMethod (Proxy :: Proxy method) + + enumerateEndpoints _ = [APIEndpoint mempty method] + where method = reflectMethod (Proxy :: Proxy method) +#endif + instance ReflectMethod method => HasEndpoint (Stream method status framing ct a) where getEndpoint _ req = case pathInfo req of [] | requestMethod req == method -> Just (APIEndpoint [] method) diff --git a/servant-ekg.cabal b/servant-ekg.cabal index e9402bb..1d519b7 100644 --- a/servant-ekg.cabal +++ b/servant-ekg.cabal @@ -25,15 +25,15 @@ library other-modules: Servant.Ekg.Internal hs-source-dirs: lib build-depends: - base >=4.9 && <4.15 - , ekg-core >=0.1.1.4 && <0.2 - , http-types >=0.12.2 && <0.13 - , hashable >=1.2.7.0 && <1.4 - , servant >=0.14 && <0.19 - , text >=1.2.3.0 && <1.3 - , time >=1.6.0.1 && <1.12 - , unordered-containers >=0.2.9.0 && <0.3 - , wai >=3.2.0 && <3.3 + base >=4.9 && <4.16 + , ekg-core >=0.1.1.4 && <0.2 + , hashable >=1.2.7.0 && <1.4 + , http-types >=0.12.2 && <0.13 + , servant >=0.14 && <0.19 + , text >=1.2.3.0 && <1.3 + , time >=1.6.0.1 && <1.10 + , unordered-containers >=0.2.9.0 && <0.3 + , wai >=3.2.0 && <3.3 default-language: Haskell2010