#!/usr/bin/env ruby require "uri" require "net/http" require "net/https" require "rexml/document" include REXML def exit_app puts "required delicious.rdf path" exit end exit_app if ARGV.empty? doc = Document.new(File.new(ARGV[0])).root exit_app unless doc doc.elements.each("NC:Bookmark") do |element| url = element.attributes["NC:URL"] name = element.attributes["NC:Name"] description = element.attributes["NC:Description"] uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = (uri.scheme == "https") http.verify_mode = OpenSSL::SSL::VERIFY_NONE begin http.start do |w| query = uri.query ? "?" + uri.query : "" request = Net::HTTP::Get.new(uri.path + query) $stdout.puts "request #{uri.to_s}" response = w.request(request) $stderr.puts "#{response.code}:#{uri}:#{name}:#{description}" unless response.code == "200" end rescue Timeout::Error, StandardError => e $stderr.puts "#{e.class}:#{uri}:#{name}:#{description}" end end