rack-streaming-proxy 1.0.3 → 2.0.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.
metadata CHANGED
@@ -1,107 +1,198 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rack-streaming-proxy
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
+ - Fred Ngo
7
8
  - Nathan Witmer
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2010-02-09 00:00:00 -07:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2014-02-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: rack
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '1.4'
17
21
  type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "1.0"
24
- version:
25
- - !ruby/object:Gem::Dependency
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '1.4'
28
+ - !ruby/object:Gem::Dependency
26
29
  name: servolux
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '0.10'
27
35
  type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
31
39
  - - ~>
32
- - !ruby/object:Gem::Version
33
- version: 0.8.1
34
- version:
35
- - !ruby/object:Gem::Dependency
40
+ - !ruby/object:Gem::Version
41
+ version: '0.10'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '1.3'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '1.3'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '10.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '10.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
36
85
  name: rack-test
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
37
91
  type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- version: 0.5.1
44
- version:
45
- - !ruby/object:Gem::Dependency
46
- name: bones
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: unicorn
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: pry
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: pry-nav
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
47
133
  type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: 3.2.0
54
- version:
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
55
140
  description: Streaming proxy for Rack, the rainbows to Rack::Proxy's unicorn.
56
- email: nwitmer@gmail.com
141
+ email:
142
+ - fredngo@gmail.com
143
+ - nwitmer@gmail.com
57
144
  executables: []
58
-
59
145
  extensions: []
60
-
61
- extra_rdoc_files:
62
- - History.txt
63
- - README.txt
64
- files:
146
+ extra_rdoc_files: []
147
+ files:
65
148
  - .gitignore
66
- - History.txt
149
+ - Gemfile
150
+ - LICENSE.txt
151
+ - README.md
67
152
  - README.txt
68
153
  - Rakefile
154
+ - dev/client.rb
69
155
  - dev/proxy.ru
70
156
  - dev/streamer.ru
71
157
  - lib/rack/streaming_proxy.rb
72
- - lib/rack/streaming_proxy/proxy_request.rb
158
+ - lib/rack/streaming_proxy/errors.rb
159
+ - lib/rack/streaming_proxy/proxy.rb
160
+ - lib/rack/streaming_proxy/railtie.rb
161
+ - lib/rack/streaming_proxy/request.rb
162
+ - lib/rack/streaming_proxy/response.rb
163
+ - lib/rack/streaming_proxy/session.rb
164
+ - lib/rack/streaming_proxy/version.rb
165
+ - rack-streaming-proxy.gemspec
73
166
  - spec/app.ru
74
167
  - spec/proxy.ru
75
168
  - spec/spec_helper.rb
76
169
  - spec/streaming_proxy_spec.rb
77
- has_rdoc: true
78
- homepage: http://github.com/aniero/rack-streaming-proxy
79
- licenses: []
80
-
170
+ homepage: http://github.com/fredngo/rack-streaming-proxy
171
+ licenses:
172
+ - MIT
173
+ metadata: {}
81
174
  post_install_message:
82
- rdoc_options:
83
- - --main
84
- - README.txt
85
- require_paths:
175
+ rdoc_options: []
176
+ require_paths:
86
177
  - lib
87
- required_ruby_version: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- version: "0"
92
- version:
93
- required_rubygems_version: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: "0"
98
- version:
178
+ required_ruby_version: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ required_rubygems_version: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
99
188
  requirements: []
100
-
101
- rubyforge_project: rack-streaming-proxy
102
- rubygems_version: 1.3.5
189
+ rubyforge_project:
190
+ rubygems_version: 2.0.3
103
191
  signing_key:
104
- specification_version: 3
105
- summary: Streaming proxy for Rack, the rainbows to Rack::Proxy's unicorn
106
- test_files: []
107
-
192
+ specification_version: 4
193
+ summary: Streaming proxy for Rack, the rainbows to Rack::Proxy's unicorn.
194
+ test_files:
195
+ - spec/app.ru
196
+ - spec/proxy.ru
197
+ - spec/spec_helper.rb
198
+ - spec/streaming_proxy_spec.rb
data/History.txt DELETED
@@ -1,4 +0,0 @@
1
- == 1.0.0 / 2009-11-14
2
-
3
- * 1 major enhancement
4
- * Birthday!
@@ -1,96 +0,0 @@
1
- class Rack::StreamingProxy
2
- class ProxyRequest
3
- include Rack::Utils
4
-
5
- attr_reader :status, :headers
6
-
7
- def initialize(request, uri)
8
- uri = URI.parse(uri)
9
-
10
- method = request.request_method.downcase
11
- method[0..0] = method[0..0].upcase
12
-
13
- proxy_request = Net::HTTP.const_get(method).new("#{uri.path}#{"?" if uri.query}#{uri.query}")
14
-
15
- if proxy_request.request_body_permitted? and request.body
16
- proxy_request.body_stream = request.body
17
- proxy_request.content_length = request.content_length
18
- proxy_request.content_type = request.content_type
19
- end
20
-
21
- %w(Accept Accept-Encoding Accept-Charset
22
- X-Requested-With Referer User-Agent Cookie
23
- Authorization
24
- ).each do |header|
25
- key = "HTTP_#{header.upcase.gsub('-', '_')}"
26
- proxy_request[header] = request.env[key] if request.env[key]
27
- end
28
- proxy_request["X-Forwarded-For"] =
29
- (request.env["X-Forwarded-For"].to_s.split(/, +/) + [request.env["REMOTE_ADDR"]]).join(", ")
30
-
31
- @piper = Servolux::Piper.new 'r', :timeout => 30
32
-
33
- @piper.child do
34
- Net::HTTP.start(uri.host, uri.port) do |http|
35
- http.request(proxy_request) do |response|
36
- # at this point the headers and status are available, but the body
37
- # has not yet been read. start reading it and putting it in the parent's pipe.
38
- response_headers = {}
39
- response.each_header {|k,v| response_headers[k] = v}
40
- @piper.puts response.code.to_i
41
- @piper.puts response_headers
42
-
43
- response.read_body do |chunk|
44
- @piper.puts chunk
45
- end
46
- @piper.puts :done
47
- end
48
- end
49
- end
50
-
51
- @piper.parent do
52
- # wait for the status and headers to come back from the child
53
- @status = read_from_child
54
- @headers = HeaderHash.new(read_from_child)
55
- end
56
- rescue => e
57
- if @piper
58
- @piper.parent { raise }
59
- @piper.child { @piper.puts e }
60
- else
61
- raise
62
- end
63
- ensure
64
- # child needs to exit, always.
65
- @piper.child { exit!(0) } if @piper
66
- end
67
-
68
- def each
69
- chunked = @headers["Transfer-Encoding"] == "chunked"
70
- term = "\r\n"
71
-
72
- while chunk = read_from_child
73
- break if chunk == :done
74
- if chunked
75
- size = bytesize(chunk)
76
- next if size == 0
77
- yield [size.to_s(16), term, chunk, term].join
78
- else
79
- yield chunk
80
- end
81
- end
82
-
83
- yield ["0", term, "", term].join if chunked
84
- end
85
-
86
-
87
- protected
88
-
89
- def read_from_child
90
- val = @piper.gets
91
- raise val if val.kind_of?(Exception)
92
- val
93
- end
94
-
95
- end
96
- end