git.iko.soy/typeable/servant
on master help sign in
Merge pull request #324 from haskell-servant/jkarni/docsHeaderFix

Re-add missing Header instance for docs.

commitf8d030804f2e6bc434a1650863b3aa6e993df36b authorJulian Arni <jkarni@gmail.com> dateWed 13 Jan 2016, 16:57 (11 years ago) parent357cc8337afddf
2 files changed+15
servant-docs/src/Servant/Docs/Internal.hs+9 servant-docs/test/Servant/DocsSpec.hs+6
servant-docs/src/Servant/Docs/Internal.hs+9
@@ -707,6 +707,15 @@ instance OVERLAPPING_
707707 status = fromInteger $ natVal (Proxy :: Proxy status)
708708 p = Proxy :: Proxy a
709709
710+instance (KnownSymbol sym, HasDocs sublayout)
711+ => HasDocs (Header sym a :> sublayout) where
712+ docsFor Proxy (endpoint, action) =
713+ docsFor sublayoutP (endpoint, action')
714+
715+ where sublayoutP = Proxy :: Proxy sublayout
716+ action' = over headers (|> headername) action
717+ headername = T.pack $ symbolVal (Proxy :: Proxy sym)
718+
710719instance (KnownSymbol sym, ToParam (QueryParam sym a), HasDocs sublayout)
711720 => HasDocs (QueryParam sym a :> sublayout) where
712721
servant-docs/test/Servant/DocsSpec.hs+6
@@ -63,6 +63,7 @@ spec = describe "Servant.Docs" $ do
6363 , ("zwei, kaks, kaks",(TT2,UT2,UT2))
6464 ]
6565
66+
6667 where
6768 tests md = do
6869 it "mentions supported content-types" $ do
@@ -76,11 +77,15 @@ spec = describe "Servant.Docs" $ do
7677 md `shouldContain` "POST"
7778 md `shouldContain` "GET"
7879
80+ it "mentions headers" $ do
81+ md `shouldContain` "- This endpoint is sensitive to the value of the **X-Test** HTTP header."
82+
7983 it "contains response samples" $
8084 md `shouldContain` "{\"dt1field1\":\"field 1\",\"dt1field2\":13}"
8185 it "contains request body samples" $
8286 md `shouldContain` "17"
8387
88+
8489-- * APIs
8590
8691data Datatype1 = Datatype1 { dt1field1 :: String
@@ -103,6 +108,7 @@ instance MimeRender PlainText Int where
103108
104109type TestApi1 = Get '[JSON, PlainText] (Headers '[Header "Location" String] Int)
105110 :<|> ReqBody '[JSON] String :> Post '[JSON] Datatype1
111+ :<|> Header "X-Test" Int :> Put '[JSON] Int
106112
107113data TT = TT1 | TT2 deriving (Show, Eq)
108114data UT = UT1 | UT2 deriving (Show, Eq)