kauperts_link_checker 0.4.1 → 0.5.1

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