rack-proxy 0.4.0 → 0.5.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.
- checksums.yaml +7 -0
- data/Gemfile.lock +1 -1
- data/lib/rack/proxy.rb +22 -8
- data/test/http_streaming_response_test.rb +1 -1
- data/test/rack_proxy_test.rb +1 -1
- metadata +11 -17
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0883f974b445bea61720cacc4c0f28237d0ec849
|
4
|
+
data.tar.gz: a701b9271fce5e9344da71b807bedafc98a44e02
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 32c96b55564c08d97621d39616d49f31db4d2a2bb232163266fd20a6a7e4a9367e4fd900cf720dd4e07c76157f6f407c2b29bb2f7731a9cbbc72a99c1c7717ea
|
7
|
+
data.tar.gz: a9e7b0d178b9aaccd09381b78ec794318705f9ef6144e58a52743fc2034b7fe579044fe855468966e1f3a371e5e9b2517e895d1524c4df116e20ea4827422f07
|
data/Gemfile.lock
CHANGED
data/lib/rack/proxy.rb
CHANGED
@@ -5,10 +5,11 @@ module Rack
|
|
5
5
|
|
6
6
|
# Subclass and bring your own #rewrite_request and #rewrite_response
|
7
7
|
class Proxy
|
8
|
-
VERSION = "0.
|
8
|
+
VERSION = "0.5.0"
|
9
9
|
|
10
10
|
# @option opts [String, URI::HTTP] :backend Backend host to proxy requests to
|
11
|
-
def initialize
|
11
|
+
def initialize(opts={})
|
12
|
+
@streaming = opts.key?(:streaming) ? opts[:streaming] : true
|
12
13
|
@backend = URI(opts[:backend]) if opts[:backend]
|
13
14
|
end
|
14
15
|
|
@@ -50,18 +51,31 @@ module Rack
|
|
50
51
|
target_request.content_type = source_request.content_type if source_request.content_type
|
51
52
|
end
|
52
53
|
|
54
|
+
|
53
55
|
# Create a streaming response (the actual network communication is deferred, a.k.a. streamed)
|
54
|
-
if @
|
55
|
-
|
56
|
+
if @streaming
|
57
|
+
if @backend
|
58
|
+
target_response = HttpStreamingResponse.new(target_request, @backend.host, @backend.port)
|
59
|
+
|
60
|
+
target_response.use_ssl = "https" == @backend.scheme
|
61
|
+
else
|
62
|
+
target_response = HttpStreamingResponse.new(target_request, source_request.host, source_request.port)
|
56
63
|
|
57
|
-
|
64
|
+
target_response.use_ssl = "https" == source_request.scheme
|
65
|
+
end
|
66
|
+
|
67
|
+
triplet = [target_response.status, target_response.headers, target_response.body]
|
58
68
|
else
|
59
|
-
|
69
|
+
host = (@backend && @backend.host) || source_request.host
|
70
|
+
port = (@backend && @backend.port) || source_request.port
|
71
|
+
target_response = Net::HTTP.start(host, port) do |http|
|
72
|
+
http.request(target_request)
|
73
|
+
end
|
60
74
|
|
61
|
-
|
75
|
+
triplet = [target_response.code, target_response.headers, target_response.body]
|
62
76
|
end
|
63
77
|
|
64
|
-
|
78
|
+
triplet
|
65
79
|
end
|
66
80
|
|
67
81
|
def extract_http_request_headers(env)
|
@@ -4,7 +4,7 @@ require "rack/http_streaming_response"
|
|
4
4
|
class HttpStreamingResponseTest < Test::Unit::TestCase
|
5
5
|
|
6
6
|
def setup
|
7
|
-
host, req = "trix.pl", Net::HTTP::Get.new("/")
|
7
|
+
host, req = "www.trix.pl", Net::HTTP::Get.new("/")
|
8
8
|
@response = Rack::HttpStreamingResponse.new(req, host)
|
9
9
|
end
|
10
10
|
|
data/test/rack_proxy_test.rb
CHANGED
metadata
CHANGED
@@ -1,46 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-proxy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.5.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jacek Becela
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-08-21 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rack
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rack-test
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
description: A Rack app that provides request/response rewriting proxy capabilities
|
@@ -68,27 +63,26 @@ files:
|
|
68
63
|
- test/test_helper.rb
|
69
64
|
homepage: http://rubygems.org/gems/rack-proxy
|
70
65
|
licenses: []
|
66
|
+
metadata: {}
|
71
67
|
post_install_message:
|
72
68
|
rdoc_options: []
|
73
69
|
require_paths:
|
74
70
|
- lib
|
75
71
|
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
72
|
requirements:
|
78
|
-
- -
|
73
|
+
- - '>='
|
79
74
|
- !ruby/object:Gem::Version
|
80
75
|
version: '0'
|
81
76
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
77
|
requirements:
|
84
|
-
- -
|
78
|
+
- - '>='
|
85
79
|
- !ruby/object:Gem::Version
|
86
80
|
version: '0'
|
87
81
|
requirements: []
|
88
82
|
rubyforge_project: rack-proxy
|
89
|
-
rubygems_version:
|
83
|
+
rubygems_version: 2.0.3
|
90
84
|
signing_key:
|
91
|
-
specification_version:
|
85
|
+
specification_version: 4
|
92
86
|
summary: A request/response rewriting HTTP proxy. A Rack app.
|
93
87
|
test_files:
|
94
88
|
- test/http_streaming_response_test.rb
|