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:
parent
98bfa84e54
commit
4ad84a7964
|
@ -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
|
Loading…
Reference in New Issue