kauperts_link_checker 0.4.1 → 0.5.1

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/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ Gemfile.lock
2
+ rdoc/
3
+ .rvmrc
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ kauperts_link_checker
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 1.9.3
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - '1.9.3'
4
+ script: 'bundle exec rake test'
5
+
6
+ notifications:
7
+ email:
8
+ - cz@aegisnet.de
data/README.rdoc CHANGED
@@ -1,17 +1,17 @@
1
- == Kauperts::LinkChecker
1
+ == Kauperts::LinkChecker {<img src="https://travis-ci.org/kaupertmedia/kauperts_link_checker.png?branch=master" alt="Build Status" />}[https://travis-ci.org/kaupertmedia/kauperts_link_checker]
2
2
 
3
3
  <b>Kauperts::LinkChecker</b> is a simple library to check for the well-being of URLs. It supports HTTPS and IDN URIs.
4
4
 
5
5
  === Installation
6
- The gem is not published yet and can be installed from github:
7
- git clone git://github.com/kaupertmedia/kauperts_link_checker.git
8
- cd kauperts_link_checker
9
- gem build kauperts_link_checker.gemspec
10
- gem install kauperts_link_checker-<gemversion>.gem
11
-
12
- Much easier using bundler:
13
- # Gemfile
14
- gem 'kauperts_link_checker', :git => "git://github.com/kaupermedia/kauperts_link_checker"
6
+
7
+ Add this line to your application's Gemfile:
8
+ gem 'kauperts_link_checker'
9
+
10
+ And then execute:
11
+ $ bundle
12
+
13
+ Or install it yourself as:
14
+ $ gem install kauperts_link_checker
15
15
 
16
16
  === Usage
17
17
  It will check any object that responds to +url+:
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'bundler'
3
3
  Bundler::GemHelper.install_tasks
4
4
  require 'rake/testtask'
5
- require 'rake/rdoctask'
5
+ require 'rdoc/task'
6
6
 
7
7
  desc "Default: run unit tests."
8
8
  task :default => :test
@@ -1,10 +1,13 @@
1
- $:.push File.expand_path("../lib/", __FILE__)
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'kauperts_link_checker/version'
2
5
 
3
6
  Gem::Specification.new do |s|
4
7
  s.name = "kauperts_link_checker"
5
- s.version = "0.4.1"
8
+ s.version = Kauperts::LinkChecker::VERSION
6
9
  s.platform = Gem::Platform::RUBY
7
- s.authors = ["Wolfgang Vogl", "Carsten Zimmermann"]
10
+ s.authors = ["Wolfgang Vogl", "Carsten Zimmermann", "Matthias Viehweger"]
8
11
  s.email = ["carp@hacksocke.de"]
9
12
  s.homepage = ""
10
13
  s.summary = "A simple library to check for the well-being of an URL"
@@ -17,9 +20,10 @@ Gem::Specification.new do |s|
17
20
  s.add_dependency "i18n"
18
21
  s.add_dependency "simpleidn"
19
22
 
23
+ s.add_development_dependency 'rake'
24
+ s.add_development_dependency 'rdoc'
20
25
  s.add_development_dependency 'mocha'
21
26
  s.add_development_dependency 'bundler'
22
- s.add_development_dependency 'redgreen'
23
27
  s.add_development_dependency 'activesupport'
24
28
  end
25
29
 
@@ -1,5 +1,7 @@
1
1
  require "net/https"
2
2
  require "simpleidn"
3
+ require "i18n"
4
+
3
5
  module Kauperts
4
6
 
5
7
  # Checks the status of an object which responds to +url+. The returned
@@ -17,23 +19,25 @@ module Kauperts
17
19
 
18
20
  attr_reader :configuration, :object, :status
19
21
 
20
- class Configuration < Struct.new(:ignore_trailing_slash_redirects)
21
- end
22
+ class Configuration < Struct.new(
23
+ :ignore_trailing_slash_redirects,
24
+ :ignore_302_redirects
25
+ ); end
22
26
 
23
27
  # === Parameters
24
28
  # * +object+: an arbitrary object which responds to +url+.
25
- # * +options+: optional configuration parameters, see below.
26
- #
27
- # === Available Options
28
- # * +ignore_trailing_slash_redirects+: ignores redirects to the same URI but only with an added trailing slash (default: false)
29
+ # * +options+: optional configuration parameters, see below.
30
+ #
31
+ # === Available Options
32
+ # * +ignore_trailing_slash_redirects+: ignores redirects to the same URI but only with an added trailing slash (default: false)
29
33
  def initialize(object, options = {})
30
34
  object.respond_to?(:url) ? @object = object : raise(ArgumentError.new("object doesn't respond to url"))
31
35
 
32
- # Assign config variables
33
- @configuration = Configuration.new
34
- options = { :ignore_trailing_slash_redirects => false }.merge(options).each do |key, val|
35
- @configuration.send(:"#{key}=", val)
36
- end
36
+ # Assign config variables
37
+ @configuration = Configuration.new
38
+ options = { :ignore_trailing_slash_redirects => false, :ignore_302_redirects => false }.merge(options).each do |key, val|
39
+ @configuration.send(:"#{key}=", val)
40
+ end
37
41
 
38
42
  end
39
43
 
@@ -67,7 +71,11 @@ module Kauperts
67
71
  # or if a 301 permanent redirect only added a trailing slash
68
72
  # while +ignore_trailing_slash_redirects+ has been set to true
69
73
  def ok?
70
- @status == '200' or (@redirect_with_trailing_slash_only == true and self.configuration.ignore_trailing_slash_redirects)
74
+ return true if @status == '200'
75
+ return true if (@status == '302' and self.configuration.ignore_302_redirects)
76
+ return true if (@redirect_with_trailing_slash_only == true and self.configuration.ignore_trailing_slash_redirects)
77
+
78
+ false
71
79
  end
72
80
 
73
81
  # Immediately checks +object+ and returns the LinkChecker instance
@@ -0,0 +1,5 @@
1
+ module Kauperts
2
+ class LinkChecker
3
+ VERSION = '0.5.1'
4
+ end
5
+ end
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  require 'test_helper'
2
3
 
3
4
  class LinkCheckerTest < ActiveSupport::TestCase
@@ -11,20 +12,33 @@ class LinkCheckerTest < ActiveSupport::TestCase
11
12
  end
12
13
  end
13
14
 
14
- test "should instantiate with optional configuration hash" do
15
- assert defined?(Kauperts::LinkChecker::Configuration)
15
+ test "should instantiate with optional configuration hash" do
16
+ assert defined?(Kauperts::LinkChecker::Configuration)
16
17
 
17
- obj = checker.new(url_object)
18
- assert_respond_to obj, :configuration
18
+ obj = checker.new(url_object)
19
+ assert_respond_to obj, :configuration
20
+
21
+ assert_respond_to obj.configuration, :ignore_trailing_slash_redirects
22
+ assert !obj.configuration.ignore_trailing_slash_redirects
23
+
24
+ obj = checker.new(url_object, :ignore_trailing_slash_redirects => true)
25
+
26
+ assert_respond_to obj.configuration, :ignore_trailing_slash_redirects
27
+ assert_equal true, obj.configuration.ignore_trailing_slash_redirects
28
+ end
19
29
 
20
- assert_respond_to obj.configuration, :ignore_trailing_slash_redirects
21
- assert !obj.configuration.ignore_trailing_slash_redirects
30
+ test "should have an configuration option to ignore 302s" do
31
+ obj = checker.new(url_object)
32
+
33
+ assert_respond_to obj.configuration, :ignore_302_redirects
34
+ assert !obj.configuration.ignore_302_redirects
35
+ assert_equal false, obj.configuration.ignore_302_redirects
22
36
 
23
- obj = checker.new(url_object, :ignore_trailing_slash_redirects => true)
37
+ obj = checker.new(url_object, :ignore_302_redirects => true)
24
38
 
25
- assert_respond_to obj.configuration, :ignore_trailing_slash_redirects
26
- assert_equal true, obj.configuration.ignore_trailing_slash_redirects
27
- end
39
+ assert_respond_to obj.configuration, :ignore_302_redirects
40
+ assert_equal true, obj.configuration.ignore_302_redirects
41
+ end
28
42
 
29
43
  test "should expose object" do
30
44
  obj = checker.new(url_object)
@@ -45,19 +59,33 @@ class LinkCheckerTest < ActiveSupport::TestCase
45
59
  assert_equal "200", obj.check!
46
60
  end
47
61
 
48
- test "should ignore permanent redirects with trailing slash only if told so" do
49
- url = url_object("http://www.example.com/foo")
50
- location = url.url + "/"
51
- stub_net_http_redirect!("301", location)
62
+ test "should ignore permanent redirects with trailing slash only if told so" do
63
+ url = url_object("http://www.example.com/foo")
64
+ location = url.url + "/"
65
+ stub_net_http_redirect!("301", location)
66
+
67
+ obj = checker.new(url)
68
+ obj.check!
69
+ assert_equal false, obj.ok?
70
+
71
+ obj = checker.new(url, :ignore_trailing_slash_redirects => true)
72
+ obj.check!
73
+ assert_equal true, obj.ok?
74
+ end
75
+
76
+ test "should ignore temporary redirects only if told so" do
77
+ url = url_object("http://www.example.com")
78
+ location = url.url + "/index.php"
79
+ stub_net_http_redirect!("302", location)
52
80
 
53
- obj = checker.new(url)
54
- obj.check!
55
- assert_equal false, obj.ok?
81
+ obj = checker.new(url)
82
+ obj.check!
83
+ assert_equal false, obj.ok?
56
84
 
57
- obj = checker.new(url, :ignore_trailing_slash_redirects => true)
58
- obj.check!
59
- assert_equal true, obj.ok?
60
- end
85
+ obj = checker.new(url, :ignore_302_redirects => true)
86
+ obj.check!
87
+ assert_equal true, obj.ok?
88
+ end
61
89
 
62
90
  test "should return status array with 404" do
63
91
  stub_net_http!("404")
@@ -177,12 +205,12 @@ class LinkCheckerTest < ActiveSupport::TestCase
177
205
  Net::HTTP.stubs(:get_response).returns(mock_response)
178
206
  end
179
207
 
180
- def stub_net_https!(return_code = "200")
208
+ def stub_net_https!(return_code = "200")
181
209
  return_code = return_code.to_s
182
210
  mock_response = mock('sslresponse')
183
211
  mock_response.stubs(:code).returns(return_code)
184
212
  Net::HTTP.any_instance.stubs(:start).returns(mock_response)
185
- end
213
+ end
186
214
 
187
215
  def stub_net_http_error!(exception, message)
188
216
  Net::HTTP.stubs(:get_response).raises(exception, message)
metadata CHANGED
@@ -1,161 +1,174 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: kauperts_link_checker
3
- version: !ruby/object:Gem::Version
4
- hash: 13
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 1
10
- version: 0.4.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Wolfgang Vogl
14
9
  - Carsten Zimmermann
10
+ - Matthias Viehweger
15
11
  autorequire:
16
12
  bindir: bin
17
13
  cert_chain: []
18
-
19
- date: 2012-04-16 00:00:00 +02:00
20
- default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
14
+ date: 2013-10-09 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
23
17
  name: i18n
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
26
19
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
34
24
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: simpleidn
38
25
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
26
+ version_requirements: !ruby/object:Gem::Requirement
40
27
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: simpleidn
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
48
40
  type: :runtime
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: mocha
52
41
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
42
+ version_requirements: !ruby/object:Gem::Requirement
54
43
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: rake
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ - !ruby/object:Gem::Dependency
65
+ name: rdoc
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
62
72
  type: :development
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- name: bundler
66
73
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ - !ruby/object:Gem::Dependency
81
+ name: mocha
82
+ requirement: !ruby/object:Gem::Requirement
68
83
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
76
88
  type: :development
77
- version_requirements: *id004
78
- - !ruby/object:Gem::Dependency
79
- name: redgreen
80
89
  prerelease: false
81
- requirement: &id005 !ruby/object:Gem::Requirement
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: bundler
98
+ requirement: !ruby/object:Gem::Requirement
82
99
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
- version: "0"
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
90
104
  type: :development
91
- version_requirements: *id005
92
- - !ruby/object:Gem::Dependency
93
- name: activesupport
94
105
  prerelease: false
95
- requirement: &id006 !ruby/object:Gem::Requirement
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: activesupport
114
+ requirement: !ruby/object:Gem::Requirement
96
115
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 3
101
- segments:
102
- - 0
103
- version: "0"
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
104
120
  type: :development
105
- version_requirements: *id006
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
106
128
  description: A simple library to check for the well-being of an URL
107
- email:
129
+ email:
108
130
  - carp@hacksocke.de
109
131
  executables: []
110
-
111
132
  extensions: []
112
-
113
133
  extra_rdoc_files: []
114
-
115
- files:
134
+ files:
135
+ - .gitignore
136
+ - .ruby-gemset
137
+ - .ruby-version
138
+ - .travis.yml
116
139
  - Gemfile
117
- - Gemfile.lock
118
140
  - LICENSE
119
141
  - README.rdoc
120
142
  - Rakefile
121
143
  - kauperts_link_checker.gemspec
122
144
  - lib/kauperts_link_checker.rb
145
+ - lib/kauperts_link_checker/version.rb
123
146
  - test/link_checker_test.rb
124
147
  - test/test_helper.rb
125
- has_rdoc: true
126
- homepage: ""
148
+ homepage: ''
127
149
  licenses: []
128
-
129
150
  post_install_message:
130
151
  rdoc_options: []
131
-
132
- require_paths:
152
+ require_paths:
133
153
  - lib
134
- required_ruby_version: !ruby/object:Gem::Requirement
154
+ required_ruby_version: !ruby/object:Gem::Requirement
135
155
  none: false
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- hash: 3
140
- segments:
141
- - 0
142
- version: "0"
143
- required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
161
  none: false
145
- requirements:
146
- - - ">="
147
- - !ruby/object:Gem::Version
148
- hash: 3
149
- segments:
150
- - 0
151
- version: "0"
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
152
166
  requirements: []
153
-
154
167
  rubyforge_project:
155
- rubygems_version: 1.4.2
168
+ rubygems_version: 1.8.23
156
169
  signing_key:
157
170
  specification_version: 3
158
171
  summary: A simple library to check for the well-being of an URL
159
- test_files:
172
+ test_files:
160
173
  - test/link_checker_test.rb
161
174
  - test/test_helper.rb
data/Gemfile.lock DELETED
@@ -1,25 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- kauperts_link_checker (0.4.0)
5
- i18n
6
- simpleidn
7
-
8
- GEM
9
- remote: http://rubygems.org/
10
- specs:
11
- activesupport (2.3.11)
12
- i18n (0.6.0)
13
- mocha (0.9.12)
14
- redgreen (1.2.2)
15
- simpleidn (0.0.3)
16
-
17
- PLATFORMS
18
- ruby
19
-
20
- DEPENDENCIES
21
- activesupport
22
- bundler
23
- kauperts_link_checker!
24
- mocha
25
- redgreen