------------------------------------------------------------------------------ -- | Defines the 'RenderHeader' type class, with the 'renderHeader' method. -- 'renderHeader' can be used to render basic header values (acting as -- identity on 'ByteString's), but it will also work on lists of quality -- values, which provides the necessary interface for rendering the full -- possibilities of Accept headers. module Network.HTTP.Media.RenderHeader ( RenderHeader (..) ) where import Data.ByteString (ByteString, intercalate) ------------------------------------------------------------------------------ -- | A class for header values, so they may be rendered to their 'ByteString' -- representation. Lists of header values and quality-marked header values -- will render appropriately. class RenderHeader h where -- | Render a header value to a UTF-8 'ByteString'. renderHeader :: h -> ByteString instance RenderHeader ByteString where renderHeader :: ByteString -> ByteString renderHeader = ByteString -> ByteString forall a. a -> a id instance RenderHeader h => RenderHeader [h] where renderHeader :: [h] -> ByteString renderHeader = ByteString -> [ByteString] -> ByteString intercalate ByteString "," ([ByteString] -> ByteString) -> ([h] -> [ByteString]) -> [h] -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . (h -> ByteString) -> [h] -> [ByteString] forall a b. (a -> b) -> [a] -> [b] map h -> ByteString forall h. RenderHeader h => h -> ByteString renderHeader