Webrick override HTTPResponse::setup_header

A

andrey

Hi, all.

My subj solution:

class MyServlet < HTTPServlet::AbstractServlet
def do_GET(req, res)
class <<res
def setup_header()
... my code ...
end
end
....
end
....
end

I think my solution is't good and is't true ruby way.
Another solution?
 
E

Eric Hodel

My subj solution:

class MyServlet < HTTPServlet::AbstractServlet
def do_GET(req, res)
class <<res
def setup_header()
... my code ...
end
end
....
end
....
end

I think my solution is't good and is't true ruby way.
Another solution?

What are you trying to accomplish with this code?
 
D

Daniel Finnie

Hi,

As Eric said, it's not obvious what end result you are expecting but
it appears you want to change the headers of the response. If so, you
can do something like this:

class MyServlet < HTTPServlet::AbstractServlet
def do_Get(req, res)
res["header_name"] = "header_value"
...
end
end

Webrick is not very well documented but the method names and their
source code are available here: http://ruby-doc.org/stdlib/

Dan
 
D

Daniel Finnie

SGksCgpHZW5lcmFsbHkgeW91IHNob3VsZCByZXBseSB0byB0aGUgcnVieS10YWxrIGxpc3QgaW5z
dGVhZCBvZiBvbmUKcGFydGljdWxhciBwZXJzb24gYXMgc29tZW9uZSBvbiB0aGUgbGlzdCBtaWdo
dCBoYXZlIG1vcmUga25vd2xlZGdlIG9mCnRoaXMgc3ViamVjdC4KCkFyZSB5b3Ugc3VyZSB0aGF0
IGlzIHRoZSBiZWhhdmlvciBvZiByZXNbImhlYWRlciJdPyAgVGhlIHNvdXJjZSBjb2RlCmRvZXMg
bm90IGxvb2sgbGlrZSBpdCBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHByZS1leGlzdGluZyBmaWVs
ZHMgYW5kCm5ldyBmaWVsZHMuICBJZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIGJvZHkgb2YgdGhl
IHJlc3BvbnNlLCB1c2UKcmVzLmJvZHkgPSAiLi4uIgoKRGFuCgoyMDA4LzQvMTkgYW5kcmV5IDxB
bmRyZXkuRC5OaWtpdGluQGdtYWlsLmNvbT46Cj4gT24gMTkgwdDSLCAwNjoxMCwgRGFuaWVsIEZp
bm5pZSA8ZC4uLkBkYW5maW5uaWUuY29tPiB3cm90ZToKPgo+ID4gICAgIHJlc1siaGVhZGVyX25h
bWUiXSA9ICJoZWFkZXJfdmFsdWUiCj4KPgo+Cj4gVGhhbmtzLgo+ICBGb3IgaW5jbHVzaW9uIGlu
IHRoZSBhbnN3ZXIgb2YgYSBzZXJ2ZXIgb2YgX2FkZGl0aW9uYWxfIGZpZWxkcyBpdCBpcwo+ICBj
b252ZW5pZW50IHRvIHVzZSByZXMgWyJoZWFkZXJfbmFtZSJdLgo+ICBCdXQgSSBuZWVkIHRvIGNo
YW5nZSB0aGUgYW5zd2VyIG9mIGEgc2VydmVyIF9jb21wbGV0ZWx5Xy4KPgo=
 
A

andrey

To clear out all of the existing headers you can use
res.instance_variable_set("@header", {"header_name" => "header_value",
"other_header_name" => "other_header_value"})

Yes, but after exiting do_Get() Webrick add self headers:

def do_GET(req, res)
...
res.instance_variable_set("@header",
{"header_name" => "header_value",
"other_header_name" =>
"other_header_value"})
...
end

% nc localhost 60001
HEAD /mjpeg.cgi HTTP/1.0

HTTP/1.1 200 OK
Connection: close
Date: Sat, 19 Apr 2008 14:52:47 GMT
Content-Type:text/html
Server: WEBrick/1.3.1 (Ruby/1.8.5/2006-08-25)
Other_header_name: other_header_value
Header_name: header_value
 
S

Simon Krahnke

* andrey said:
Yes, but after exiting do_Get() Webrick add self headers:

If you want to change the Content-Type, use

req['Content-Type'] = 'application/x-my-world'

mfg, simon .... l
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,291
Messages
2,571,455
Members
48,132
Latest member
KatlynC08

Latest Threads

Top