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