url-checker 1.0.1 → 1.1.0
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.
- checksums.yaml +4 -4
- data/bin/checkurls +1 -1
- data/config/environment.rb +3 -1
- data/lib/url_checker/{url_checker.rb → cli.rb} +9 -10
- data/lib/url_checker/rescued_response.rb +15 -0
- data/lib/url_checker/single_checker.rb +46 -0
- data/lib/url_checker/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a3976012ff91534b59a8a2ed70550a453602fda
|
4
|
+
data.tar.gz: c09fdcd490bc26047cc0d9b86537b0b0b809a9c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 537be50b970fcc977e920ed16e25bebf4c30815afa210ba977662daf35f8d45be309c1d9dd3b32cbeb558bb4074631a1ecb42b81134d00f8e731d6ec2ce338b5
|
7
|
+
data.tar.gz: c7c17c67f0f671e0c6bd2f23a1aaf2f841c4a00efad18759b24961a92cc203ecf797134bbcfb440d840248d730d844a360a4037ce8ca19b35af472e22bd81d7d
|
data/bin/checkurls
CHANGED
data/config/environment.rb
CHANGED
@@ -6,5 +6,7 @@ require 'csv'
|
|
6
6
|
require 'net/http'
|
7
7
|
|
8
8
|
require_relative '../lib/url_checker'
|
9
|
-
require_relative '../lib/url_checker/
|
9
|
+
require_relative '../lib/url_checker/cli'
|
10
|
+
require_relative '../lib/url_checker/rescued_response'
|
11
|
+
require_relative '../lib/url_checker/single_checker'
|
10
12
|
require_relative '../lib/url_checker/version'
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module UrlChecker
|
4
4
|
# The main class
|
5
|
-
class
|
5
|
+
class Cli
|
6
6
|
BAD_CALL_MSG = 'Please call with one CSV file with URLs in the first column'
|
7
7
|
RESULTS_HEADERS = %w(Response URL).freeze
|
8
8
|
|
@@ -33,28 +33,27 @@ module UrlChecker
|
|
33
33
|
attr_accessor :num_issues, :results
|
34
34
|
|
35
35
|
def check_url(url)
|
36
|
-
|
37
|
-
response
|
38
|
-
|
39
|
-
display_result response, url
|
36
|
+
response = UrlChecker::SingleChecker.new(url: url).call
|
37
|
+
collect_result response
|
38
|
+
display_result response
|
40
39
|
end
|
41
40
|
|
42
41
|
def check_urls_from_csv
|
43
42
|
threads = []
|
44
43
|
CSV.foreach(file_path) do |row|
|
45
44
|
url = row[0]
|
46
|
-
threads << Thread.new { check_url url } if url.match?(/
|
45
|
+
threads << Thread.new { check_url url } if url.match?(/\Ahttp/)
|
47
46
|
end
|
48
47
|
threads.each(&:join)
|
49
48
|
end
|
50
49
|
|
51
|
-
def collect_result(response
|
52
|
-
line = ["#{response.code} #{response.message}",
|
50
|
+
def collect_result(response)
|
51
|
+
line = ["#{response.code} #{response.message}", response.uri.to_s]
|
53
52
|
results << line
|
54
53
|
end
|
55
54
|
|
56
|
-
def display_result(response
|
57
|
-
msg = " #{response.code} #{response.message} #{
|
55
|
+
def display_result(response)
|
56
|
+
msg = " #{response.code} #{response.message} #{response.uri.to_s}"
|
58
57
|
case response
|
59
58
|
when Net::HTTPSuccess, Net::HTTPRedirection
|
60
59
|
puts msg.green
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module UrlChecker
|
4
|
+
# Checks a single URL and returns the result
|
5
|
+
class RecuedResponse
|
6
|
+
attr_reader :code, :message, :uri
|
7
|
+
|
8
|
+
def initialize(code:, message:, uri:)
|
9
|
+
raise TypeError, 'uri is not a URI' unless uri.is_a? URI
|
10
|
+
@code = code
|
11
|
+
@message = message
|
12
|
+
@uri = uri
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module UrlChecker
|
4
|
+
# Checks a single URL and returns the result
|
5
|
+
class SingleChecker
|
6
|
+
attr_reader :url_string, :uri
|
7
|
+
|
8
|
+
def initialize(url:)
|
9
|
+
@url_string = url
|
10
|
+
end
|
11
|
+
|
12
|
+
def call
|
13
|
+
check_url
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def check_url
|
19
|
+
@uri = URI(url_string)
|
20
|
+
return invalid_uri_response unless valid_url?
|
21
|
+
response = Net::HTTP.get_response uri
|
22
|
+
response.uri ||= uri # sometimes the uri is not set
|
23
|
+
response
|
24
|
+
rescue Errno::ECONNREFUSED => e
|
25
|
+
rescued_response('Connection refused', e.message)
|
26
|
+
rescue Errno::EINVAL => e
|
27
|
+
rescued_response('Invalid argument', e.message)
|
28
|
+
end
|
29
|
+
|
30
|
+
def invalid_uri_response
|
31
|
+
rescued_response('Invalid URL', 'URL must begin with http')
|
32
|
+
end
|
33
|
+
|
34
|
+
def rescued_response(code, message)
|
35
|
+
UrlChecker::RecuedResponse.new(
|
36
|
+
code: code,
|
37
|
+
message: message,
|
38
|
+
uri: uri
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def valid_url?
|
43
|
+
uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/url_checker/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: url-checker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin McCormack
|
@@ -35,7 +35,9 @@ files:
|
|
35
35
|
- bin/checkurls
|
36
36
|
- config/environment.rb
|
37
37
|
- lib/url_checker.rb
|
38
|
-
- lib/url_checker/
|
38
|
+
- lib/url_checker/cli.rb
|
39
|
+
- lib/url_checker/rescued_response.rb
|
40
|
+
- lib/url_checker/single_checker.rb
|
39
41
|
- lib/url_checker/version.rb
|
40
42
|
homepage: https://github.com/HarlemSquirrel/url-checker
|
41
43
|
licenses:
|