-- | Headers for mail messages and HTTP requests/responses module MessageHeaders(module MessageHeaders,module HeaderName) where import Data.Char(isSpace) import Utils2(apFst) import HeaderName type Headers = [Header] type Header = (HeaderName,String) header name value = (name,value)::Header -------------------------------------------------------------------------------- --lookupHeader headers = getheader headers . headerName getheader headers h = dropWhile isSpace (maybe "" id $ lookup h (headers::Headers)) renameHdr from to' = map (apFst (\h -> if h==from then to' else h)) -- to is a keyword -- | Replace existing header or add a new one. updateHdr (h,r) [] = [(h,r)] updateHdr (h,r) ((h',r'):hdrs) = if h==h' then (h',r):hdrs else (h',r'):updateHdr (h,r) hdrs -- | Modify all existing headers with the given 'HeaderName'. modHdr h f = let modhdr (h',r) = (h',if h'==(h::HeaderName) then f r else r) in map modhdr --------------------------------------------------------------------------------