em-http-request 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of em-http-request might be problematic. Click here for more details.

data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -256,6 +256,11 @@ module EventMachine
256
256
  head['cookie'] = encode_cookie(cookie)
257
257
  end
258
258
 
259
+ # Set content-type header if missing and body is a Ruby hash
260
+ if not head['content-type'] and options[:body].is_a? Hash
261
+ head['content-type'] = "application/x-www-form-urlencoded"
262
+ end
263
+
259
264
  # Build the request
260
265
  request_header = encode_request(@method, @uri.path, query)
261
266
  request_header << encode_headers(head)
@@ -87,7 +87,11 @@ Stallion.saddle :spec do |stable|
87
87
  stable.response.status = 200
88
88
 
89
89
  elsif stable.request.post?
90
- stable.response.write stable.request.body.read
90
+ if stable.request.path_info == '/echo_content_type'
91
+ stable.response.write stable.request.env["CONTENT_TYPE"]
92
+ else
93
+ stable.response.write stable.request.body.read
94
+ end
91
95
 
92
96
  elsif stable.request.path_info == '/set_cookie'
93
97
  stable.response["Set-Cookie"] = "id=1; expires=Tue, 09-Aug-2011 17:53:39 GMT; path=/;"
@@ -390,4 +390,46 @@ describe EventMachine::HttpRequest do
390
390
  }
391
391
  end
392
392
  end
393
+
394
+ context "body content-type encoding" do
395
+ it "should not set content type on string in body" do
396
+ EventMachine.run {
397
+ http = EventMachine::HttpRequest.new('http://127.0.0.1:8080/echo_content_type').post :body => "data"
398
+
399
+ http.errback { failed }
400
+ http.callback {
401
+ http.response_header.status.should == 200
402
+ http.response.should be_empty
403
+ EventMachine.stop
404
+ }
405
+ }
406
+ end
407
+
408
+ it "should set content-type automatically when passed a ruby hash/array for body" do
409
+ EventMachine.run {
410
+ http = EventMachine::HttpRequest.new('http://127.0.0.1:8080/echo_content_type').post :body => {:a => :b}
411
+
412
+ http.errback { failed }
413
+ http.callback {
414
+ http.response_header.status.should == 200
415
+ http.response.should match("application/x-www-form-urlencoded")
416
+ EventMachine.stop
417
+ }
418
+ }
419
+ end
420
+
421
+ it "should not override content-type when passing in ruby hash/array for body" do
422
+ EventMachine.run {
423
+ http = EventMachine::HttpRequest.new('http://127.0.0.1:8080/echo_content_type').post({
424
+ :body => {:a => :b}, :head => {'content-type' => 'text'}})
425
+
426
+ http.errback { failed }
427
+ http.callback {
428
+ http.response_header.status.should == 200
429
+ http.response.should match("text")
430
+ EventMachine.stop
431
+ }
432
+ }
433
+ end
434
+ end
393
435
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: em-http-request
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Grigorik
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-25 00:00:00 -04:00
12
+ date: 2009-10-29 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency