customizing global request handler
Jonas Pfenniger
zimbatm at oree.ch
Wed Apr 18 12:05:09 EDT 2007
2007/4/18, carmen <_ at whats-your.name>:
> what is the cleanest way to do something for every request of a particular type (Verb, and Content-Type header)? i'm trying to figure out if shipping a custom camping.rb is avoidable, and if, how i should structure a patch
>
>
> my app http://whats-your.name/yard/ uses exclusively JSON based messaging between server and client. this means POST bodies are JSON, and not querystring.. camping assumes:
>
> elsif @method == "post"
> qs.merge!(C.qsp(@in.read))
>
> if i patch to:
>
> elsif @method == "post"
> case e.CONTENT_TYPE
> when "application/x-www-form-urlencoded"
> qs.merge!(C.qsp(@in.read))
> when "application/json"
> @input = JSON.parse(@in.read))
> end
>
> theres two probs, 1) you now have to always make sure you send the x-www-form-urlencoded header (weird browsers, or XHR requests might not), 2) @input is overwritten by qs.dup, input isnt a query string!
>
> i tried using a custom verb, which works fine in firefox, but not WebKit-QT4-Linux.. RFC 2616 does not specify a format for the data in a POST body, and the overall function of the request is consistent with POST.
>
> what do i do? :)
Hi Carmen,
to avoid patching Camping, I suggest you look into overriding the
"service" method for the target controllers. You can do this in your
main application module or by including a custom module in your
controllers, as you prefer. Let me know if you need more hints.
--
Cheers,
zimbatm
More information about the Camping-list
mailing list