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 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
- (@config.status_handlers[status] || []).each do |sh|
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?) || (@config.abort_on_redirect? && @browser.was_redirected?)
58
- @config.after_handlers[:abort].each do |ah|
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 do |th|
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
@@ -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
- if !was_redirected?
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
- attr_reader :status_handlers
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)
@@ -1,3 +1,3 @@
1
1
  module Klepto
2
- VERSION = "0.5.8"
2
+ VERSION = "0.5.9"
3
3
  end
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.8
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: &70282140348500 !ruby/object:Gem::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: *70282140348500
24
+ version_requirements: *70095952127860
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capybara
27
- requirement: &70282136786600 !ruby/object:Gem::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: *70282136786600
35
+ version_requirements: *70095952127360
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: nokogiri
38
- requirement: &70282136786140 !ruby/object:Gem::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: *70282136786140
46
+ version_requirements: *70095952126900
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activesupport
49
- requirement: &70282136785760 !ruby/object:Gem::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: *70282136785760
57
+ version_requirements: *70095952126520
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: multi_json
60
- requirement: &70282136785220 !ruby/object:Gem::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: *70282136785220
68
+ version_requirements: *70095952125980
69
69
  description: Tearing up web pages into ActiveRecord resources
70
70
  email:
71
71
  - github@coryodaniel.com