steam 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,9 +10,10 @@ module Steam
10
10
  class HtmlUnit
11
11
  autoload :Actions, 'steam/browser/html_unit/actions'
12
12
  autoload :Client, 'steam/browser/html_unit/client'
13
+ autoload :Connection, 'steam/browser/html_unit/connection'
13
14
  autoload :Drb, 'steam/browser/html_unit/drb'
14
15
  autoload :Forker, 'steam/browser/html_unit/forker'
15
- autoload :Connection, 'steam/browser/html_unit/connection'
16
+ autoload :Handler, 'steam/browser/html_unit/handler'
16
17
  autoload :Matchers, 'steam/browser/html_unit/matchers'
17
18
  autoload :Page, 'steam/browser/html_unit/page'
18
19
  autoload :WebResponse, 'steam/browser/html_unit/web_response'
@@ -71,6 +72,26 @@ module Steam
71
72
  Locator.within(response.body, *args, &block)
72
73
  end
73
74
 
75
+ def set_handler(type, &block) # TODO use delegate
76
+ @client.set_handler(type, &block)
77
+ end
78
+
79
+ def remove_handler(type)
80
+ @client.remove_handler(type)
81
+ end
82
+
83
+ def get_cookie(name)
84
+ @client.get_cookie(name)
85
+ end
86
+
87
+ def add_cookie(name, value)
88
+ @client.add_cookie(name, value)
89
+ end
90
+
91
+ def clear_cookies
92
+ @client.clear_cookies
93
+ end
94
+
74
95
  protected
75
96
 
76
97
  def respond_to
@@ -13,6 +13,8 @@ module Steam
13
13
  Java.import 'com.gargoylesoftware.htmlunit.BrowserVersion'
14
14
  Java.import 'com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController'
15
15
  Java.import 'com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException'
16
+ Java.import 'org.apache.commons.httpclient.Cookie', 'Java::Com::Gargoylesoftware::Htmlunit::Cookie'
17
+ # Java.import 'com.gargoylesoftware.htmlunit.util.Cookie'
16
18
 
17
19
  include Java::Com::Gargoylesoftware::Htmlunit
18
20
 
@@ -20,10 +22,11 @@ module Steam
20
22
  def notify(message, origin); end
21
23
  end
22
24
 
23
- attr_reader :connection
25
+ attr_reader :connection, :handlers
24
26
 
25
27
  def initialize(connection = nil, options = {})
26
28
  @connection = connection
29
+ @handlers = {}
27
30
  options = Steam.config[:html_unit].merge(options)
28
31
 
29
32
  @java = WebClient.new(BrowserVersion.send(options[:browser_version]))
@@ -53,11 +56,11 @@ module Steam
53
56
  def get(request)
54
57
  perform(self.request_settings(request))
55
58
  end
56
-
59
+
57
60
  def perform(request_settings)
58
61
  @java._invoke('getPage', 'Lcom.gargoylesoftware.htmlunit.WebRequestSettings;', request_settings)
59
62
  end
60
-
63
+
61
64
  def request_settings(request)
62
65
  url = Java::Net::Url.new(request.url)
63
66
  settings = WebRequestSettings.new(url)
@@ -70,7 +73,30 @@ module Steam
70
73
  yield if block_given?
71
74
  end
72
75
 
73
- # FIXME setLevel throws "Fail: unknown method name `setLevel'". weird.
76
+ def set_handler(type, &block)
77
+ @java.send(:"set#{type.to_s.camelize}Handler", Handler.create(type, block))
78
+ end
79
+
80
+ def remove_handler(type)
81
+ @java.send(:"set#{type.to_s.camelize}Handler", nil)
82
+ end
83
+
84
+ def get_cookie(name)
85
+ cookie = @java.getCookieManager.getCookie(name)
86
+ cookie ? cookie.getValue : nil
87
+ end
88
+
89
+ def add_cookie(name, value) # TODO what about domain, path, expires etc?
90
+ cookie = Cookie.new
91
+ cookie.setName(name)
92
+ cookie.setValue(value)
93
+ @java.getCookieManager.addCookie(cookie)
94
+ end
95
+
96
+ def clear_cookies
97
+ @java.getCookieManager.clearCookies
98
+ end
99
+
74
100
  def log_level=(level)
75
101
  [ 'com.gargoylesoftware.htmlunit',
76
102
  'com.gargoylesoftware.htmlunit.html',
@@ -0,0 +1,36 @@
1
+ module Steam
2
+ module Browser
3
+ class HtmlUnit
4
+ module Handler
5
+ class << self
6
+ def create(type, proc)
7
+ type = type.to_s.camelize
8
+ handler = self.const_get(type).new(proc)
9
+ Rjb::bind(handler, "com.gargoylesoftware.htmlunit.#{type}Handler")
10
+ end
11
+ end
12
+
13
+ class Base
14
+ attr_reader :proc
15
+
16
+ def initialize(proc)
17
+ @proc = proc
18
+ end
19
+ end
20
+
21
+ class Alert < Base
22
+ def handleAlert(page, message)
23
+ proc.call(page, message)
24
+ end
25
+ end
26
+
27
+ class Confirm < Base
28
+ def handleConfirm(page, message)
29
+ result = proc.call(page, message)
30
+ result.nil? || !!result
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,3 @@
1
1
  module Steam
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 5
9
- version: 0.0.5
8
+ - 6
9
+ version: 0.0.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Sven Fuchs
@@ -65,6 +65,7 @@ files:
65
65
  - lib/steam/browser/html_unit/client.rb
66
66
  - lib/steam/browser/html_unit/connection.rb
67
67
  - lib/steam/browser/html_unit/drb.rb
68
+ - lib/steam/browser/html_unit/handler.rb
68
69
  - lib/steam/browser/html_unit/page.rb
69
70
  - lib/steam/browser/html_unit/web_response.rb
70
71
  - lib/steam/browser/html_unit.rb