browsermob-proxy 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
 
17
17
  s.add_runtime_dependency "rest-client"
18
18
  s.add_runtime_dependency "childprocess"
19
- s.add_runtime_dependency "json"
19
+ s.add_runtime_dependency "multi_json", "~> 1.0"
20
20
  s.add_runtime_dependency "har"
21
21
 
22
22
  s.add_development_dependency "rspec", ">= 2.5.0"
@@ -1,5 +1,5 @@
1
1
  require 'restclient'
2
- require 'json'
2
+ require 'multi_json'
3
3
  require 'har'
4
4
 
5
5
  require 'browsermob/proxy/client'
@@ -5,7 +5,8 @@ module BrowserMob
5
5
  attr_reader :host, :port
6
6
 
7
7
  def self.from(server_url)
8
- port = JSON.parse(
8
+ decode_method = MultiJson.respond_to?(:load) ? :load : :decode
9
+ port = MultiJson.send(decode_method,
9
10
  RestClient.post(URI.join(server_url, "proxy").to_s, '')
10
11
  ).fetch('port')
11
12
 
@@ -34,9 +35,17 @@ module BrowserMob
34
35
  HAR::Archive.from_string @resource["har"].get
35
36
  end
36
37
 
37
- def selenium_proxy
38
+ def selenium_proxy(*protocols)
38
39
  require 'selenium-webdriver' unless defined?(Selenium)
39
- Selenium::WebDriver::Proxy.new(:http => "#{@host}:#{@port}")
40
+
41
+ protocols += [:http] if protocols.empty?
42
+ unless (protocols - [:http, :ssl, :ftp]).empty?
43
+ raise "Invalid protocol specified. Must be one of: :http, :ssl, or :ftp."
44
+ end
45
+
46
+ proxy_mapping = {}
47
+ protocols.each { |proto| proxy_mapping[proto] = "#{@host}:#{@port}" }
48
+ Selenium::WebDriver::Proxy.new(proxy_mapping)
40
49
  end
41
50
 
42
51
  def whitelist(regexp, status_code)
@@ -49,7 +49,7 @@ module BrowserMob
49
49
 
50
50
 
51
51
  def listening?
52
- TCPSocket.new("localhost", port).close
52
+ TCPSocket.new("127.0.0.1", port).close
53
53
  true
54
54
  rescue
55
55
  false
@@ -1,5 +1,5 @@
1
1
  module BrowserMob
2
2
  module Proxy
3
- VERSION = "0.0.6"
3
+ VERSION = "0.0.7"
4
4
  end
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -8,7 +8,11 @@ module BrowserMob
8
8
  module Proxy
9
9
  module SpecHelper
10
10
  def server
11
- $_bm_server ||= Server.new(File.join(home, "bin", "browsermob-proxy"), :log => true).start
11
+ $_bm_server ||= Server.new(
12
+ File.join(home, "bin", "browsermob-proxy"),
13
+ :port => Selenium::WebDriver::PortProber.random,
14
+ :log => true
15
+ ).start
12
16
  end
13
17
 
14
18
  def new_proxy
@@ -35,7 +39,6 @@ module BrowserMob
35
39
  end
36
40
  end
37
41
 
38
-
39
42
  RSpec.configure do |c|
40
43
  c.include(BrowserMob::Proxy::SpecHelper)
41
44
  c.after(:suite) { $_bm_server.stop if $_bm_server }
@@ -102,6 +102,38 @@ module BrowserMob
102
102
 
103
103
  client.headers(:foo => "bar")
104
104
  end
105
+
106
+ context "#selenium_proxy" do
107
+ it "defaults to HTTP proxy only" do
108
+ proxy = client.selenium_proxy
109
+
110
+ proxy.http.should == "#{client.host}:#{client.port}"
111
+ proxy.ssl.should be_nil
112
+ proxy.ftp.should be_nil
113
+ end
114
+
115
+ it "allows multiple protocols" do
116
+ proxy = client.selenium_proxy(:http, :ssl)
117
+
118
+ proxy.http.should == "#{client.host}:#{client.port}"
119
+ proxy.ssl.should == "#{client.host}:#{client.port}"
120
+ proxy.ftp.should be_nil
121
+ end
122
+
123
+ it "allows disabling HTTP proxy" do
124
+ proxy = client.selenium_proxy(:ssl)
125
+
126
+ proxy.ssl.should == "#{client.host}:#{client.port}"
127
+ proxy.http.should be_nil
128
+ proxy.ftp.should be_nil
129
+ end
130
+
131
+ it "raises an error when a bad protocol is used" do
132
+ lambda {
133
+ client.selenium_proxy(:htp)
134
+ }.should raise_error
135
+ end
136
+ end
105
137
  end
106
138
 
107
139
  end
metadata CHANGED
@@ -1,129 +1,135 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: browsermob-proxy
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 6
9
- segments_generated: true
10
- version: 0.0.6
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - jari.bakken
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-03-22 00:00:00 -05:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- segments:
27
- - 0
28
- segments_generated: true
29
- version: "0"
30
- requirement: *id001
12
+ date: 2012-04-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
31
15
  name: rest-client
32
- prerelease: false
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :runtime
34
- - !ruby/object:Gem::Dependency
35
- version_requirements: &id002 !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- segments:
40
- - 0
41
- segments_generated: true
42
- version: "0"
43
- requirement: *id002
44
- name: childprocess
45
23
  prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: childprocess
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :runtime
47
- - !ruby/object:Gem::Dependency
48
- version_requirements: &id003 !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- segments:
53
- - 0
54
- segments_generated: true
55
- version: "0"
56
- requirement: *id003
57
- name: json
58
39
  prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: multi_json
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '1.0'
59
54
  type: :runtime
60
- - !ruby/object:Gem::Dependency
61
- version_requirements: &id004 !ruby/object:Gem::Requirement
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- segments:
66
- - 0
67
- segments_generated: true
68
- version: "0"
69
- requirement: *id004
70
- name: har
71
55
  prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: har
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
72
70
  type: :runtime
73
- - !ruby/object:Gem::Dependency
74
- version_requirements: &id005 !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- segments:
79
- - 2
80
- - 5
81
- - 0
82
- segments_generated: true
83
- version: 2.5.0
84
- requirement: *id005
85
- name: rspec
86
71
  prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 2.5.0
87
86
  type: :development
88
- - !ruby/object:Gem::Dependency
89
- version_requirements: &id006 !ruby/object:Gem::Requirement
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- segments:
94
- - 2
95
- - 7
96
- segments_generated: true
97
- version: "2.7"
98
- requirement: *id006
99
- name: selenium-webdriver
100
87
  prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 2.5.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: selenium-webdriver
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '2.7'
101
102
  type: :development
102
- - !ruby/object:Gem::Dependency
103
- version_requirements: &id007 !ruby/object:Gem::Requirement
104
- requirements:
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
105
107
  - - ~>
106
- - !ruby/object:Gem::Version
107
- segments:
108
- - 0
109
- - 9
110
- - 2
111
- segments_generated: true
112
- version: 0.9.2
113
- requirement: *id007
108
+ - !ruby/object:Gem::Version
109
+ version: '2.7'
110
+ - !ruby/object:Gem::Dependency
114
111
  name: rake
115
- prerelease: false
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.9.2
116
118
  type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 0.9.2
117
126
  description: Ruby client for the BrowserMob Proxy REST API
118
- email:
127
+ email:
119
128
  - jari.bakken@gmail.com
120
129
  executables: []
121
-
122
130
  extensions: []
123
-
124
131
  extra_rdoc_files: []
125
-
126
- files:
132
+ files:
127
133
  - .gitignore
128
134
  - .travis.yml
129
135
  - Gemfile
@@ -146,39 +152,31 @@ files:
146
152
  - spec/spec_helper.rb
147
153
  - spec/unit/client_spec.rb
148
154
  - spec/unit/webdriver_listener_spec.rb
149
- has_rdoc: true
150
155
  homepage: http://github.com/jarib/browsermob-proxy-rb
151
156
  licenses: []
152
-
153
157
  post_install_message:
154
158
  rdoc_options: []
155
-
156
- require_paths:
159
+ require_paths:
157
160
  - lib
158
- required_ruby_version: !ruby/object:Gem::Requirement
159
- requirements:
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- segments:
163
- - 0
164
- segments_generated: true
165
- version: "0"
166
- required_rubygems_version: !ruby/object:Gem::Requirement
167
- requirements:
168
- - - ">="
169
- - !ruby/object:Gem::Version
170
- segments:
171
- - 0
172
- segments_generated: true
173
- version: "0"
161
+ required_ruby_version: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
+ none: false
169
+ requirements:
170
+ - - ! '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
174
173
  requirements: []
175
-
176
174
  rubyforge_project: browsermob-proxy-rb
177
- rubygems_version: 1.3.6
175
+ rubygems_version: 1.8.21
178
176
  signing_key:
179
177
  specification_version: 3
180
178
  summary: Ruby client for the BrowserMob Proxy REST API
181
- test_files:
179
+ test_files:
182
180
  - spec/e2e/listener_spec.rb
183
181
  - spec/e2e/selenium_spec.rb
184
182
  - spec/fixtures/1.html
@@ -188,3 +186,4 @@ test_files:
188
186
  - spec/spec_helper.rb
189
187
  - spec/unit/client_spec.rb
190
188
  - spec/unit/webdriver_listener_spec.rb
189
+ has_rdoc: