rack-stripper 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,14 +2,14 @@ require 'rack'
2
2
 
3
3
  module Rack
4
4
  class Stripper
5
- VERSION = '1.0.1'
5
+ VERSION = '1.1.0'
6
6
 
7
7
  attr_accessor :add_xml_instruction
8
8
  attr_accessor :is_xml_response
9
9
 
10
10
  def initialize(app, options={})
11
11
  @app = app
12
- self.add_xml_instruction = options[:add_xml_instruction] || false
12
+ @add_xml_instruction = options[:add_xml_instruction] || false
13
13
  end
14
14
 
15
15
  def call(env)
@@ -19,16 +19,22 @@ module Rack
19
19
  def _call(env)
20
20
  status, headers, response = @app.call(env)
21
21
 
22
+ if status != 200
23
+ return [status, headers, response]
24
+ end
25
+
22
26
  if headers.has_key?('Content-Type')
23
27
  self.is_xml_response = !headers['Content-Type'].match(/xml/).nil?
24
28
  end
25
29
 
26
30
  if response.respond_to?(:body)
27
- stripped_body = process_body(response.body)
28
- headers['Content-Length'] = stripped_body.bytesize if headers.has_key?('Content-Length')
29
- response = Rack::Response.new(stripped_body, status, headers)
30
- response.to_a
31
+ response.body = process_body(response.body)
32
+ if headers.has_key?('Content-Length')
33
+ headers['Content-Length'] = response.body.bytesize
34
+ end
31
35
  end
36
+
37
+ [status, headers, response]
32
38
  end
33
39
 
34
40
  protected
@@ -36,7 +42,7 @@ module Rack
36
42
  def process_body(body)
37
43
  body = body[0] if body.is_a?(Array)
38
44
  body.strip!
39
- if self.add_xml_instruction && doesnt_have_xml_instruction_already?(body) && self.is_xml_response
45
+ if @add_xml_instruction && @is_xml_response && lacks_instruction?(body)
40
46
  body = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n#{body}"
41
47
  end
42
48
  body
@@ -48,8 +54,8 @@ module Rack
48
54
  # @param [String] body The body of the text.
49
55
  #
50
56
  # @return [Boolean] true if the content doesn't have an XML instruction, false if it does.
51
- def doesnt_have_xml_instruction_already?(body)
57
+ def lacks_instruction?(body)
52
58
  body.index('<?xml ').nil? rescue false
53
59
  end
54
60
  end
55
- end
61
+ end
@@ -16,6 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.version = Rack::Stripper::VERSION
17
17
 
18
18
  gem.add_development_dependency 'rspec'
19
+ gem.add_development_dependency 'rake'
19
20
  gem.add_development_dependency 'debugger'
20
- gem.add_dependency 'rack', '>= 1.0.0'
21
+ gem.add_runtime_dependency 'rack', '~> 1.4.5'
21
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-stripper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-27 00:00:00.000000000 Z
12
+ date: 2013-03-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: debugger
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -48,17 +64,17 @@ dependencies:
48
64
  requirement: !ruby/object:Gem::Requirement
49
65
  none: false
50
66
  requirements:
51
- - - ! '>='
67
+ - - ~>
52
68
  - !ruby/object:Gem::Version
53
- version: 1.0.0
69
+ version: 1.4.5
54
70
  type: :runtime
55
71
  prerelease: false
56
72
  version_requirements: !ruby/object:Gem::Requirement
57
73
  none: false
58
74
  requirements:
59
- - - ! '>='
75
+ - - ~>
60
76
  - !ruby/object:Gem::Version
61
- version: 1.0.0
77
+ version: 1.4.5
62
78
  description: Trims whitespace from response bodies sent through rack.
63
79
  email:
64
80
  - ben@kree.gr
@@ -90,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
106
  version: '0'
91
107
  segments:
92
108
  - 0
93
- hash: 705178727278721884
109
+ hash: 3041786719630630150
94
110
  required_rubygems_version: !ruby/object:Gem::Requirement
95
111
  none: false
96
112
  requirements:
@@ -99,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
115
  version: '0'
100
116
  segments:
101
117
  - 0
102
- hash: 705178727278721884
118
+ hash: 3041786719630630150
103
119
  requirements: []
104
120
  rubyforge_project:
105
121
  rubygems_version: 1.8.23