|
3 | 3 | {-# LANGUAGE DeriveFunctor #-}
|
4 | 4 | {-# LANGUAGE FlexibleContexts #-}
|
5 | 5 | {-# LANGUAGE FlexibleInstances #-}
|
6 |
| -{-# LANGUAGE FunctionalDependencies #-} |
7 | 6 | {-# LANGUAGE GADTs #-}
|
8 |
| -{-# LANGUAGE KindSignatures #-} |
9 |
| -{-# LANGUAGE MultiParamTypeClasses #-} |
| 7 | +{-# LANGUAGE FunctionalDependencies #-} |
10 | 8 | {-# LANGUAGE PolyKinds #-}
|
11 | 9 | {-# LANGUAGE ScopedTypeVariables #-}
|
12 | 10 | {-# LANGUAGE TypeFamilies #-}
|
@@ -51,9 +49,6 @@ import Web.HttpApiData
|
51 | 49 |
|
52 | 50 | import Prelude ()
|
53 | 51 | import Prelude.Compat
|
54 |
| -import Servant.API.ContentTypes |
55 |
| - (JSON, PlainText, FormUrlEncoded, OctetStream, |
56 |
| - MimeRender(..)) |
57 | 52 | import Servant.API.Header
|
58 | 53 | (Header)
|
59 | 54 |
|
@@ -117,7 +112,7 @@ instance {-# OVERLAPPABLE #-} ( FromHttpApiData v, BuildHeadersTo xs, KnownSymbo
|
117 | 112 | `HCons` buildHeadersTo headers
|
118 | 113 | Right h -> Header h `HCons` buildHeadersTo headers
|
119 | 114 |
|
120 |
| --- * Getting |
| 115 | +-- * Getting headers |
121 | 116 |
|
122 | 117 | class GetHeaders ls where
|
123 | 118 | getHeaders :: ls -> [HTTP.Header]
|
@@ -158,20 +153,20 @@ instance (KnownSymbol h, GetHeadersFromHList rest, ToHttpApiData v)
|
158 | 153 | where
|
159 | 154 | getHeaders' hs = getHeadersFromHList $ getHeadersHList hs
|
160 | 155 |
|
161 |
| --- * Adding |
| 156 | +-- * Adding headers |
162 | 157 |
|
163 | 158 | -- We need all these fundeps to save type inference
|
164 | 159 | class AddHeader h v orig new
|
165 | 160 | | h v orig -> new, new -> h, new -> v, new -> orig where
|
166 | 161 | addOptionalHeader :: ResponseHeader h v -> orig -> new -- ^ N.B.: The same header can't be added multiple times
|
167 | 162 |
|
168 |
| - |
| 163 | +-- In this instance, we add a Header on top of something that is already decorated with some headers |
169 | 164 | instance {-# OVERLAPPING #-} ( KnownSymbol h, ToHttpApiData v )
|
170 | 165 | => AddHeader h v (Headers (fst ': rest) a) (Headers (Header h v ': fst ': rest) a) where
|
171 | 166 | addOptionalHeader hdr (Headers resp heads) = Headers resp (HCons hdr heads)
|
172 | 167 |
|
173 |
| -instance {-# OVERLAPPABLE #-} ( KnownSymbol h, ToHttpApiData v |
174 |
| - , new ~ (Headers '[Header h v] a) ) |
| 168 | +-- In this instance, 'a' parameter is decorated with a Header. |
| 169 | +instance {-# OVERLAPPABLE #-} ( KnownSymbol h, ToHttpApiData v , new ~ Headers '[Header h v] a) |
175 | 170 | => AddHeader h v a new where
|
176 | 171 | addOptionalHeader hdr resp = Headers resp (HCons hdr HNil)
|
177 | 172 |
|
|
0 commit comments