resource-verification.rb: Ruby-Skript, welches Resources, alternatives und deren Größe mit HTTP HEAD überprüft, hat keine weiteren Abhängigkeiten

git-svn-id: svn://svn.c3d2.de/c3d2-web/trunk@618 31f61c52-7bfb-0310-b897-fc00f8a278f0
This commit is contained in:
astro 2007-04-17 22:56:25 +00:00
parent 98bfa84e54
commit 4ad84a7964
1 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,59 @@
#!/usr/bin/env ruby
require 'rexml/document'
require 'uri'
require 'net/http'
def verify_url(url)
uri = URI::parse(url)
response = Net::HTTP::start(uri.host, uri.port) { |http|
http.head(uri.request_uri)
}
class << response
attr_reader :header
end
if response.kind_of? Net::HTTPOK
response['content-length'].to_s.to_i
else
raise response.class.to_s
end
end
def verify_resource(resource)
url = resource.attributes['url']
size = resource.attributes['size'].to_i
print "#{url} "
$stdout.flush
begin
content_length = verify_url url
if content_length != 0 and content_length != size
puts "#{content_length}(remote) != #{size}(resource)"
else
puts "Ok (#{content_length} B)"
end
rescue
puts $!.to_s
end
end
Dir::chdir(File::dirname(__FILE__) + "/..")
NEWSDIR = "content/news"
Dir.entries(NEWSDIR).each do |file|
next if file =~ /^\./
item = REXML::Document.new(File.new("#{NEWSDIR}/#{file}")).root
raise unless item.name == 'item'
item.each_element('resource') { |r|
verify_resource r
r.each_element('alternative') { |a|
verify_resource a
}
}
end