url-checker 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 +7 -0
- data/bin/checkurls +6 -0
- data/lib/url_checker.rb +83 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 520fdbebbffff313fced72bdff28b582b954c226
|
4
|
+
data.tar.gz: cf5b0d0c5d1ffb6446db835312f524c0c5f47036
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f7bb7f5c95da1a5e90eba3706f35874dcf6a6c1ef26154ff5b1d66dc06a81f4bd155421b784ab1aafba5764c22cc8ea08f184414f15639e739627d575ce37a90
|
7
|
+
data.tar.gz: 98dab8c5b611986b7215e1d1d0bfff84b29a9552823ac48b8d94c7f18688a80cac44680ae7f2433b85288ee7a5c7aa26757f181bb7627650a5fc6f75c755e96a
|
data/bin/checkurls
ADDED
data/lib/url_checker.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '../config/environment'
|
3
|
+
|
4
|
+
# The main class
|
5
|
+
class UrlChecker
|
6
|
+
BAD_CALL_MSG = 'Please call with one CSV file with URLs in the first column'
|
7
|
+
RESULTS_HEADERS = %w(Response URL).freeze
|
8
|
+
|
9
|
+
attr_reader :file_path, :results_file_path
|
10
|
+
|
11
|
+
def initialize(file_path:)
|
12
|
+
@file_path = file_path
|
13
|
+
end
|
14
|
+
|
15
|
+
def call
|
16
|
+
@results = [RESULTS_HEADERS]
|
17
|
+
@num_issues = 0
|
18
|
+
check_urls_from_csv
|
19
|
+
display_summary
|
20
|
+
write_results
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.call
|
24
|
+
if ARGV.length == 1 && ARGV.first.match?(/\.csv\z/)
|
25
|
+
url_checker = new(file_path: ARGV.first).call
|
26
|
+
else
|
27
|
+
puts BAD_CALL_MSG.red
|
28
|
+
end
|
29
|
+
url_checker
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
attr_accessor :num_issues, :results
|
35
|
+
|
36
|
+
def check_url(url)
|
37
|
+
uri = URI(url)
|
38
|
+
response = Net::HTTP.get_response uri
|
39
|
+
collect_result response, url
|
40
|
+
display_result response, url
|
41
|
+
end
|
42
|
+
|
43
|
+
def check_urls_from_csv
|
44
|
+
threads = []
|
45
|
+
CSV.foreach(file_path) do |row|
|
46
|
+
url = row[0]
|
47
|
+
threads << Thread.new { check_url url } if url.match?(/http/)
|
48
|
+
end
|
49
|
+
threads.each(&:join)
|
50
|
+
end
|
51
|
+
|
52
|
+
def collect_result(response, url)
|
53
|
+
line = ["#{response.code} #{response.message}", url]
|
54
|
+
results << line
|
55
|
+
end
|
56
|
+
|
57
|
+
def display_result(response, url)
|
58
|
+
msg = " #{response.code} #{response.message} #{url}"
|
59
|
+
case response
|
60
|
+
when Net::HTTPSuccess, Net::HTTPRedirection
|
61
|
+
puts msg.green
|
62
|
+
else
|
63
|
+
@num_issues += 1
|
64
|
+
puts msg.red
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def display_summary
|
69
|
+
num_checked = results.length - 1
|
70
|
+
msg = " #{num_checked} URLs checked with #{num_issues} issue(s)."
|
71
|
+
num_issues.positive? ? puts(msg.yellow) : puts(msg.green)
|
72
|
+
end
|
73
|
+
|
74
|
+
def write_results
|
75
|
+
time = Time.now.strftime('%Y-%m-%d-%H:%M:%S')
|
76
|
+
@results_file_path = file_path.gsub('.csv', "_results_#{time}.csv")
|
77
|
+
puts " Results saved to #{results_file_path}"
|
78
|
+
CSV.open(results_file_path, 'wb') do |csv|
|
79
|
+
results.each { |r| csv << r }
|
80
|
+
end
|
81
|
+
results_file_path
|
82
|
+
end
|
83
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: url-checker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kevin McCormack
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-02-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: colorize
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.8'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.8'
|
27
|
+
description: A Ruby CLI for checking a list of URLs from a CSV file
|
28
|
+
email: HarlemSquirrel@gmail.com
|
29
|
+
executables:
|
30
|
+
- checkurls
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- bin/checkurls
|
35
|
+
- lib/url_checker.rb
|
36
|
+
homepage: https://github.com/HarlemSquirrel/url-checker
|
37
|
+
licenses:
|
38
|
+
- MIT
|
39
|
+
metadata: {}
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 2.4.0
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubyforge_project:
|
56
|
+
rubygems_version: 2.6.10
|
57
|
+
signing_key:
|
58
|
+
specification_version: 4
|
59
|
+
summary: A Ruby CLI for checking a list of URLs from a CSV file
|
60
|
+
test_files: []
|