-- | module Network.HTTP.Pony.Transformer.CaseInsensitiveHeader where import Data.Profunctor (Star(..), runStar, dimap) import Control.Lens (over, ASetter) import qualified Data.CaseInsensitive as CI type Middleware f s t a b = (a -> f b) -> s -> f t caseInsensitive :: (CI.FoldCase header, Functor f) => ASetter req req' header (CI.CI header) -> ASetter res' res (CI.CI header') header' -> Middleware f req res req' res' caseInsensitive x y = transform (over x CI.mk) (over y CI.original) transform x y = runStar . dimap x y . Star