2015-02-24 10:28:23 +01:00
|
|
|
{-# LANGUAGE DataKinds #-}
|
|
|
|
{-# LANGUAGE DeriveDataTypeable #-}
|
|
|
|
{-# LANGUAGE PolyKinds #-}
|
2015-05-02 03:21:03 +02:00
|
|
|
{-# OPTIONS_HADDOCK not-home #-}
|
2016-05-03 12:05:39 +02:00
|
|
|
module Servant.API.Header (
|
2017-12-10 13:25:14 +01:00
|
|
|
Header, Header',
|
|
|
|
) where
|
2014-12-08 12:28:11 +01:00
|
|
|
|
2018-03-11 16:58:31 +01:00
|
|
|
import Data.Typeable
|
|
|
|
(Typeable)
|
|
|
|
import GHC.TypeLits
|
|
|
|
(Symbol)
|
2017-12-10 13:25:14 +01:00
|
|
|
import Servant.API.Modifiers
|
|
|
|
|
2014-12-08 12:28:11 +01:00
|
|
|
-- | Extract the given header's value as a value of type @a@.
|
2017-12-10 13:25:14 +01:00
|
|
|
-- I.e. header sent by client, parsed by server.
|
2014-12-08 12:28:11 +01:00
|
|
|
--
|
|
|
|
-- Example:
|
|
|
|
--
|
2015-02-24 10:28:23 +01:00
|
|
|
-- >>> newtype Referer = Referer Text deriving (Eq, Show)
|
|
|
|
-- >>>
|
|
|
|
-- >>> -- GET /view-my-referer
|
|
|
|
-- >>> type MyApi = "view-my-referer" :> Header "from" Referer :> Get '[JSON] Referer
|
2017-12-10 13:25:14 +01:00
|
|
|
type Header = Header' '[Optional, Strict]
|
|
|
|
|
|
|
|
data Header' (mods :: [*]) (sym :: Symbol) a
|
|
|
|
deriving Typeable
|
2015-02-24 10:28:23 +01:00
|
|
|
|
|
|
|
-- $setup
|
|
|
|
-- >>> import Servant.API
|
|
|
|
-- >>> import Data.Aeson
|
|
|
|
-- >>> import Data.Text
|