rack-proxy 0.5.18 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a10a4faae0e96b439f6603d90dccbed07d49d4c
4
- data.tar.gz: e0fbc5485768ec3772650081ac608d4494aa65b2
3
+ metadata.gz: 93dce27bea8526a5e14b0ebd3265682a657b119a
4
+ data.tar.gz: 727bccbcece1514a3b447f5b8cca2522695129db
5
5
  SHA512:
6
- metadata.gz: 9ef78affe56fbe01050f3ef209f7105b5c528406a76be5fc3810fca0bf50ebaf17aa7c57bcade9098035ee6077c7e9d8d95e92d6790e5a10e3bc8cdadd7b9163
7
- data.tar.gz: 438cd3f955a8085f0393f1b233c4773000c25809112240bdec8ab067b6d17f3290735bff2741a6ea2856a620f2974115a28b8a6699c59c6a6c6b231e0922a486
6
+ metadata.gz: b20e8d141a3d369f2bf32cf93a24d336a850c41c5dd960a300c8dd293f1d867eed389f44345da101675b1750ccf510f6e1d06f6d5bc6dd5ae8e7eccc1e206600
7
+ data.tar.gz: bf2664fb58d99a8a4fbe0f4f3aaee1dc6fd9726a97ec5ff9c23678f0dc65038a5f0867006ffa2c931cd83dfe2b27ccced449e1d612f3a67203ab60b633fad3d1
@@ -0,0 +1,19 @@
1
+ sudo: false
2
+ cache: bundler
3
+ language: ruby
4
+ before_install:
5
+ - "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
6
+ - gem install bundler
7
+ - gem update bundler
8
+ script: bundle exec rake test
9
+ rvm:
10
+ - 2.0.0
11
+ - 2.1.5
12
+ - 2.2.2
13
+ - 2.2.3
14
+ - 2.3.0
15
+ - 2.3.1
16
+ env:
17
+ - RAILS_ENV=test RACK_ENV=test
18
+ notifications:
19
+ email: false
@@ -7,10 +7,13 @@ PATH
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
+ power_assert (0.2.6)
10
11
  rack (1.2.1)
11
12
  rack-test (0.5.6)
12
13
  rack (>= 1.0)
13
14
  rake (0.9.2.2)
15
+ test-unit (3.1.5)
16
+ power_assert
14
17
 
15
18
  PLATFORMS
16
19
  ruby
@@ -19,3 +22,7 @@ DEPENDENCIES
19
22
  rack-proxy!
20
23
  rack-test
21
24
  rake
25
+ test-unit
26
+
27
+ BUNDLED WITH
28
+ 1.12.4
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
- A request/response rewriting HTTP proxy. A Rack app.
2
- Subclass `Rack::Proxy` and provide your `rewrite_env` and `rewrite_response` methods.
1
+ A request/response rewriting HTTP proxy. A Rack app. Subclass `Rack::Proxy` and provide your `rewrite_env` and `rewrite_response` methods.
3
2
 
4
-
5
- ## Example
3
+ Example
4
+ -------
6
5
 
7
6
  ```ruby
8
7
  class Foo < Rack::Proxy
@@ -44,12 +43,54 @@ The same can be achieved for *all* requests going through the `Rack::Proxy` inst
44
43
  Rack::Proxy.new(ssl_verify_none: true)
45
44
  ```
46
45
 
46
+ Using it as a middleware:
47
+ -------------------------
48
+
49
+ Example: Proxying only requests that end with ".php" could be done like this:
50
+
51
+ ```ruby
52
+ require 'rack/proxy'
53
+ class RackPhpProxy < Rack::Proxy
54
+
55
+ def perform_request(env)
56
+ request = Rack::Request.new(env)
57
+ if request.path =~ %r{\.php}
58
+ env["HTTP_HOST"] = "localhost"
59
+ env["REQUEST_PATH"] = "/php/#{request.fullpath}"
60
+ super(env)
61
+ else
62
+ @app.call(env)
63
+ end
64
+ end
65
+ end
66
+ ```
67
+
68
+ To use the middleware, please consider the following:
69
+
70
+ 1) For Rails we could add a configuration in config/application.rb
71
+
72
+ ```ruby
73
+ config.middleware.use RackPhpProxy, {ssl_verify_none: true}
74
+ ```
75
+
76
+ 2) For Sinatra or any Rack-based application:
77
+
78
+ ```ruby
79
+ class MyAwesomeSinatra < Sinatra::Base
80
+ use RackPhpProxy, {ssl_verify_none: true}
81
+ end
82
+ ```
83
+
84
+ This will allow to run the other requests through the application and only proxy the requests that match the condition from the middleware.
85
+
47
86
  See tests for more examples.
48
87
 
49
- ## WARNING
88
+ WARNING
89
+ -------
50
90
 
51
91
  Doesn't work with fakeweb/webmock. Both libraries monkey-patch net/http code.
52
92
 
53
- ## Todos
93
+ Todos
94
+ -----
54
95
 
55
- * Make the docs up to date with the current use case for this code: everything except streaming which involved a rather ugly monkey patch and only worked in 1.8, but does not work now.
96
+ - Make the docs up to date with the current use case for this code: everything except streaming which involved a rather ugly monkey patch and only worked in 1.8, but does not work now.
@@ -5,7 +5,7 @@ module Rack
5
5
 
6
6
  # Subclass and bring your own #rewrite_request and #rewrite_response
7
7
  class Proxy
8
- VERSION = "0.5.18"
8
+ VERSION = "0.6.0"
9
9
 
10
10
  class << self
11
11
  def extract_http_request_headers(env)
@@ -39,7 +39,13 @@ module Rack
39
39
  end
40
40
 
41
41
  # @option opts [String, URI::HTTP] :backend Backend host to proxy requests to
42
- def initialize(opts = {})
42
+ def initialize(app = nil, opts= {})
43
+ if app.is_a?(Hash)
44
+ opts = app
45
+ @app = nil
46
+ else
47
+ @app = app
48
+ end
43
49
  @streaming = opts.fetch(:streaming, true)
44
50
  @ssl_verify_none = opts.fetch(:ssl_verify_none, false)
45
51
  @backend = URI(opts[:backend]) if opts[:backend]
@@ -21,4 +21,5 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.add_dependency("rack")
23
23
  s.add_development_dependency("rack-test")
24
+ s.add_development_dependency("test-unit")
24
25
  end
@@ -1,4 +1,6 @@
1
1
  require "rubygems"
2
+ require 'bundler/setup'
3
+ require 'bundler/gem_tasks'
2
4
  require "test/unit"
3
5
 
4
6
  require "rack"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-proxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.18
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacek Becela
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-18 00:00:00.000000000 Z
11
+ date: 2016-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: A Rack app that provides request/response rewriting proxy capabilities
42
56
  with streaming.
43
57
  email:
@@ -47,6 +61,7 @@ extensions: []
47
61
  extra_rdoc_files: []
48
62
  files:
49
63
  - ".gitignore"
64
+ - ".travis.yml"
50
65
  - Gemfile
51
66
  - Gemfile.lock
52
67
  - LICENSE