1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
module Network.HTTP.Semantics.Header (
-- * Low-level headers.
FieldName,
FieldValue,
TokenHeader,
TokenHeaderList,
TokenHeaderTable,
-- * Value table
ValueTable,
getFieldValue,
-- * Deprecated
HeaderTable,
HeaderValue,
getHeaderValue,
) where
import Data.Array (Array)
import Data.Array.Base (unsafeAt)
import Network.HTTP.Semantics.Token
import Data.ByteString (ByteString)
-- | Field name. Internal usage only.
type FieldName = ByteString
-- | Field value.
type FieldValue = ByteString
{-# DEPRECATED HeaderValue "use FieldValue instead" #-}
-- | Header value.
type HeaderValue = ByteString
-- | An array to get 'FieldValue' quickly.
-- 'getHeaderValue' should be used.
-- Internally, the key is 'tokenIx'.
type ValueTable = Array Int (Maybe FieldValue)
{-# DEPRECATED HeaderTable "use TokenHeaderTable instead" #-}
-- | A pair of token list and value table.
type HeaderTable = (TokenHeaderList, ValueTable)
-- | A pair of token list and value table.
type TokenHeaderTable = (TokenHeaderList, ValueTable)
-- | TokenBased header.
type TokenHeader = (Token, FieldValue)
-- | TokenBased header list.
type TokenHeaderList = [TokenHeader]
{-# DEPRECATED getHeaderValue "use geFieldValue instead" #-}
-- | Accessing 'FieldValue' with 'Token'.
{-# INLINE getHeaderValue #-}
getHeaderValue :: Token -> ValueTable -> Maybe FieldValue
getHeaderValue t tbl = tbl `unsafeAt` tokenIx t
-- | Accessing 'FieldValue' with 'Token'.
{-# INLINE getFieldValue #-}
getFieldValue :: Token -> ValueTable -> Maybe FieldValue
getFieldValue t tbl = tbl `unsafeAt` tokenIx t
|