@@ -9,8 +9,10 @@ module Servant.JQuery.Internal where
9import Control.Applicative
9import Control.Applicative
10import Control.Lens
10import Control.Lens
11import Data.Char (toLower)
11import Data.Char (toLower)
12import Data.Monoid
13import Data.Monoid
13import Data.Proxy
14import Data.Proxy
15+import Data.String.Utils
14import GHC.TypeLits
16import GHC.TypeLits
15import Servant.API
17import Servant.API
@@ -53,7 +55,25 @@ data QueryArg = QueryArg
53 , _argType :: ArgType
55 , _argType :: ArgType
54 } deriving (Eq, Show)
56 } deriving (Eq, Show)
56−type HeaderArg = String
58+data HeaderArg = HeaderArg
59+ { headerArgName :: String
62+ { headerArgName :: String
63+ , headerPattern :: String
66+instance Show HeaderArg where
67+ show (HeaderArg n) = "header" <> n
68+ show (ReplaceHeaderArg n p)
69+ | pn `startswith` p = pv <> " + \"" <> rp <> "\""
70+ | pn `endswith` p = "\"" <> rp <> "\" + " <> pv
71+ | pn `isInfixOf` p = "\"" <> replace pn ("\"" <> pv <> "\"") p <> "\""
75+ pn = "{header" <> n <> "}"
58data Url = Url
78data Url = Url
59 { _path :: Path
79 { _path :: Path
@@ -144,7 +164,7 @@ instance (KnownSymbol sym, HasJQ sublayout)
144 type JQ (Header sym a :> sublayout) = JQ sublayout
164 type JQ (Header sym a :> sublayout) = JQ sublayout
146 jqueryFor Proxy req =
166 jqueryFor Proxy req =
147− jqueryFor subP (req & reqHeaders <>~ [hname])
167+ jqueryFor subP (req & reqHeaders <>~ [HeaderArg hname])
149 where hname = symbolVal (Proxy :: Proxy sym)
169 where hname = symbolVal (Proxy :: Proxy sym)
150 subP = Proxy :: Proxy sublayout
170 subP = Proxy :: Proxy sublayout