[web-devel] proxy with wai

Michael Snoyman michael at snoyman.com
Tue Mar 24 07:01:39 UTC 2015


On Sun, Mar 22, 2015 at 10:01 AM Jos van den Oever <jos at vandenoever.info>
wrote:

> On Sunday 08 March 2015 07:28:30 you wrote:
> > I've updated that Gist to be compatible with WAI 3.0. The basic changes I
> > made were:
> >
> > 1. Change the way Warp settings are applied (no longer use record syntax,
> > but explicit set* functions).
> > 2. conduit is no longer the standard streaming interface for WAI, so
> > imported Network.Wai.Conduit and used helper functions from there.
> > 3. The specific question you asked about: the semantics for how to do
> > resource allocation in an application have changed. There were some holes
> > in the previous approach that allowed async exceptions to leak in at the
> > wrong time. Instead, WAI 3.0 uses a similar interface to most resource
> > allocation functions in Haskell (like bracket or withFile). Specifically,
> > this looks like:
> >
> >
> >     HCl.withResponse req2 man $ \res -> do
> >         let body = mapOutput (Chunk . fromByteString) $
> > HCC.bodyReaderSource $ HCl.responseBody res
> >             headers = filter safeResHeader $ HCl.responseHeaders res
> >         respond $ responseSource (HCl.responseStatus res) headers body
>
> I'd like my proxy to be a caching proxy so each request shoule be saved to
> a
> file. I've tried adding an additional sink, (sinkFile) or conduit
> (conduitFie)
> to the HCC.bodyReaderSource, but cannot it right. What would be a good way
> to
> do this?
>
>
>
What have you tried so far?

Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/web-devel/attachments/20150324/d3997948/attachment.html>


More information about the web-devel mailing list