klepto 0.5.8 → 0.5.9
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.
- data/lib/klepto/bot.rb +13 -15
- data/lib/klepto/browser.rb +1 -5
- data/lib/klepto/config.rb +5 -2
- data/lib/klepto/version.rb +1 -1
- metadata +11 -11
data/lib/klepto/bot.rb
CHANGED
@@ -45,32 +45,30 @@ EOS
|
|
45
45
|
@config.after_handlers[:get].each do |ah|
|
46
46
|
ah.call(@browser, @config.url)
|
47
47
|
end
|
48
|
+
|
49
|
+
if @browser.was_redirected?
|
50
|
+
@config.status_handler(:redirect).each {|sh| sh.call(:redirect, @browser) }
|
51
|
+
|
52
|
+
if @config.abort_on_redirect?
|
53
|
+
@config.after_handlers[:abort].each {|ah| ah.call(@browser) }
|
54
|
+
return
|
55
|
+
end
|
56
|
+
end
|
48
57
|
|
49
58
|
# Dispatch all the handlers for HTTP Status Codes.
|
50
59
|
@browser.statuses.each do |status|
|
51
|
-
|
52
|
-
sh.call(status, @browser)
|
53
|
-
end
|
60
|
+
@config.status_handler(status).each {|sh| sh.call(status, @browser) }
|
54
61
|
end
|
55
62
|
|
56
63
|
# If the page was not a failure or if not aborting, structure that bad boy.
|
57
|
-
if (@browser.failure? && @config.abort_on_failure?)
|
58
|
-
@config.after_handlers[:abort].each
|
59
|
-
ah.call(@browser,{
|
60
|
-
browser_failure: @browser.failure?,
|
61
|
-
abort_on_failure: @config.abort_on_failure?,
|
62
|
-
abort_on_redirect: @config.abort_on_redirect?,
|
63
|
-
redirect: @browser.was_redirected?
|
64
|
-
})
|
65
|
-
end
|
64
|
+
if (@browser.failure? && @config.abort_on_failure?)
|
65
|
+
@config.after_handlers[:abort].each {|ah| ah.call(@browser) }
|
66
66
|
else
|
67
67
|
@structure = __structure(@browser.page)
|
68
68
|
end
|
69
69
|
rescue Capybara::Poltergeist::TimeoutError => ex
|
70
70
|
if @config.has_timeout_handler?
|
71
|
-
@config.status_handlers[:timeout].each
|
72
|
-
th.call(ex, @browser, @config.url)
|
73
|
-
end
|
71
|
+
@config.status_handlers[:timeout].each{|th| th.call(ex, @browser, @config.url) }
|
74
72
|
else
|
75
73
|
raise ex
|
76
74
|
end
|
data/lib/klepto/browser.rb
CHANGED
@@ -42,11 +42,7 @@ module Klepto
|
|
42
42
|
# approximate code (2xx for example). :redirect will be pushed onto the stack if a
|
43
43
|
# redirect happened.
|
44
44
|
def statuses
|
45
|
-
|
46
|
-
[status, statusx]
|
47
|
-
else
|
48
|
-
[status, statusx, :redirect]
|
49
|
-
end
|
45
|
+
[status, statusx]
|
50
46
|
end
|
51
47
|
|
52
48
|
def statusx
|
data/lib/klepto/config.rb
CHANGED
@@ -2,8 +2,7 @@ module Klepto
|
|
2
2
|
class Config
|
3
3
|
attr_reader :after_handlers
|
4
4
|
attr_reader :before_handlers
|
5
|
-
|
6
|
-
|
5
|
+
|
7
6
|
def initialize
|
8
7
|
@headers = {}
|
9
8
|
@abort_on_failure = true
|
@@ -54,6 +53,10 @@ module Klepto
|
|
54
53
|
|
55
54
|
def abort_on_redirect(aor)
|
56
55
|
@abort_on_redirect = aor
|
56
|
+
end
|
57
|
+
|
58
|
+
def status_handler(status)
|
59
|
+
@status_handlers[status] || []
|
57
60
|
end
|
58
61
|
|
59
62
|
def on_http_timeout(&block)
|
data/lib/klepto/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: klepto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-06-01 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: poltergeist
|
16
|
-
requirement: &
|
16
|
+
requirement: &70095952127860 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70095952127860
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: capybara
|
27
|
-
requirement: &
|
27
|
+
requirement: &70095952127360 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - =
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.0.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70095952127360
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: nokogiri
|
38
|
-
requirement: &
|
38
|
+
requirement: &70095952126900 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.5.6
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70095952126900
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activesupport
|
49
|
-
requirement: &
|
49
|
+
requirement: &70095952126520 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70095952126520
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: multi_json
|
60
|
-
requirement: &
|
60
|
+
requirement: &70095952125980 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '1.0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70095952125980
|
69
69
|
description: Tearing up web pages into ActiveRecord resources
|
70
70
|
email:
|
71
71
|
- github@coryodaniel.com
|