klepto 0.5.8 → 0.5.9

Sign up to get free protection for your applications and to get access to all the features.
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