From bffdca6cb18280442996e0c753afe14ca331cad5 Mon Sep 17 00:00:00 2001 From: Stormwind Date: Fri, 23 Nov 2012 21:24:37 +0100 Subject: Delete Content-Length. Conten-Type and body on status 204 Should work, but somehow it doesn't... --- lib/zero/response.rb | 16 +++++++++++----- spec/unit/response/response_spec.rb | 11 +++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/lib/zero/response.rb b/lib/zero/response.rb index fefa320..c86e5df 100644 --- a/lib/zero/response.rb +++ b/lib/zero/response.rb @@ -30,12 +30,18 @@ module Zero # # @return [Array] # - def to_a() + def to_a # TODO Remove content length and body, on certain status codes - # Set content length, if not already set - content_length unless header.has_key? 'Content-Length' - # Set content type, if not already set - content_type 'text/html' unless header.has_key? 'Content-Type' + if status == 204 + header.delete('Content-Length') + header.delete('Content-Type') + body = [] + else + # Set content length, if not already set + content_length unless header.has_key? 'Content-Length' + # Set content type, if not already set + content_type 'text/html' unless header.has_key? 'Content-Type' + end [status, header, body] end diff --git a/spec/unit/response/response_spec.rb b/spec/unit/response/response_spec.rb index 18612ce..7a02ced 100644 --- a/spec/unit/response/response_spec.rb +++ b/spec/unit/response/response_spec.rb @@ -45,6 +45,17 @@ describe Zero::Response do value[1]['Content-Type'].should eq('text/html') # Headers end + + it "removes Content-Type, Content-Length and body on status code 204" do + subject.body.push '"foobar"' + subject.content_type 'application/json' + subject.header['Content-Length'] = 8 + + subject.status = 204 + value = subject.to_a + + value[1].should eq({}) # Headers + end end describe '#status' do -- cgit v1.2.3-70-g09d2