mirror of
https://github.com/public-apis/public-apis.git
synced 2025-06-02 19:01:57 +02:00
Integrate link validation into CI
This commit is contained in:
parent
708f4b7fa9
commit
2e9088ecf2
2 changed files with 21 additions and 18 deletions
|
@ -1,10 +1,10 @@
|
|||
#!/usr/bin/env ruby
|
||||
require 'httparty'
|
||||
require 'ruby-progressbar'
|
||||
require 'uri'
|
||||
allowed_codes = [200, 302, 403]
|
||||
args = ARGV
|
||||
filename = args[0]
|
||||
fail_flag = false
|
||||
contents = File.open(filename, 'rb') { |f| f.read }
|
||||
raw_links = URI.extract(contents, ['http', 'https'])
|
||||
# Remove trailing ')' from entry URLs
|
||||
|
@ -23,40 +23,43 @@ if dup.uniq.length > 0
|
|||
dup.uniq.each do |e|
|
||||
fails.push("Duplicate link: #{e}")
|
||||
end
|
||||
fail_flag = true
|
||||
end
|
||||
# Remove any duplicates from array
|
||||
links = links.uniq
|
||||
count = 0
|
||||
total = links.length
|
||||
progressbar = ProgressBar.create(:total => total)
|
||||
# GET each link and check for valid response code from allowed_codes
|
||||
links.each do |link|
|
||||
begin
|
||||
count += 1
|
||||
puts "(#{count}/#{total}) #{link}"
|
||||
res = HTTParty.get(link, timeout: 10)
|
||||
if res.code.nil?
|
||||
fails.push("(NIL): #{link}")
|
||||
next
|
||||
end
|
||||
if !allowed_codes.include?(res.code)
|
||||
fails.push("(#{res.code}): #{link}")
|
||||
fail_flag = true
|
||||
else
|
||||
puts "\t(#{res.code})"
|
||||
end
|
||||
rescue Net::ReadTimeout
|
||||
fails.push("(TMO): #{link}")
|
||||
rescue OpenSSL::SSL::SSLError
|
||||
fails.push("(SSL): #{link}")
|
||||
rescue SocketError
|
||||
fails.push("(SOK): #{link}")
|
||||
rescue
|
||||
puts "FAIL: (#{res.code}) #{link}"
|
||||
fails.push("(#{res.code}): #{link}")
|
||||
fail_flag = true
|
||||
fails.push("(ERR): #{link}")
|
||||
end
|
||||
progressbar.increment
|
||||
end
|
||||
puts "#{count}/#{total} links checked"
|
||||
if fails.length <= 0
|
||||
puts "all links valid"
|
||||
exit(0)
|
||||
else
|
||||
puts "-- RESULTS --"
|
||||
end
|
||||
fails.each do |e|
|
||||
puts e
|
||||
end
|
||||
if fail_flag
|
||||
fails.each do |e|
|
||||
puts e
|
||||
end
|
||||
exit(1)
|
||||
else
|
||||
exit(0)
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue