browsermob-proxy 0.0.6 → 0.0.7

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.
@@ -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: