adding "headers" to pattern matching achieves my goal and seems simple enough. I'll work on patch.
In other news, I'm at the 10gen nosql conference right now. :) B. On Thu, Mar 11, 2010 at 12:17 AM, Jan Lehnardt <j...@apache.org> wrote: > > On 10 Mar 2010, at 21:07, J Chris Anderson wrote: > >> >> On Mar 10, 2010, at 7:47 PM, Robert Newson wrote: >> >>> All, >>> >>> I want to retrieve the JSON document or a specific binary attachment >>> of it from the same URL, conditional on the Accept header. That is, >>> "/db/doc" is either JSON metadata or a binary stream, depending on >>> content-type negotiation. The below rewrite enhancement would achieve >>> it, I think, but perhaps there's a cleaner way? Right now, I'm adding >>> another Erlang module to achieve this but I would really like to do it >>> entirely from a design document. >>> >>> I'm thinking of writing a new kind of rewrite handler. I have a case >>> where it would be very useful to rewrite a URL based on the contents >>> of a request header. That is, the presence of a particular header will >>> alter the path, but not otherwise; >>> >>> { >>> "_id":"_design/foo", >>> "rewrites": { >>> "bar": { >>> "function":"function(req){ if (req.headers["Accept"] == blah) { >>> return req.path + "extra";} return req.path" >>> >>> that is, the rewrite handler would get a full request object and >>> return the rewritten path, and could use anything from the request to >>> do so. >>> >> >> we originally decided against an executable rewrite handler for reasons of >> performance. > > One could argue that optional executable rewrites are okay. Especially when > written as > Erlang functions. > > >> is there a way to add to the pattern matching api to achieve this? > > "from": { > "path":"/db/:doc", > "headers":{"Accept":"application/octet-stream"} > }, > "to":"/db/doc/attachment" > > "from": { > "path":"/db/:doc", > "headers":{"Accept":"application/json"} > }, > "to":"/db/doc" > > Could do the trick, but I don't want to be the one implementing that :) > > Cheers > Jan > -- > >