lib/massive_sitemap/ping.rb in massive_sitemap-2.0.0 vs lib/massive_sitemap/ping.rb in massive_sitemap-2.1.0

- old
+ new

@@ -3,30 +3,41 @@ require 'cgi' require 'open-uri' # Ping Search Engines to pull the latest update module MassiveSitemap + extend self + ENGINES_URLS = { :google => 'http://www.google.com/webmasters/tools/ping?sitemap=%s', :bing => 'http://www.bing.com/webmaster/ping.aspx?siteMap=%s', :ask => 'http://submissions.ask.com/ping?sitemap=%s', + :yandex => 'http://webmaster.yandex.ru/wmconsole/sitemap_list.xml?host=%s', } - def ping(url, engines = ENGINES_URLS.keys) + DEFAULT_ENGINES = [:google, :bing, :yandex] #ask seems to be down, so disable for now by default + + def ping(url, engines = DEFAULT_ENGINES) url = verify_and_escape(url) Array(engines).each do |engine| if engine_url = ENGINES_URLS[engine] - open(engine_url % url) + begin + open(engine_url % url) + rescue => e + log_error(engine, e) + end end end end - module_function :ping private def verify_and_escape(url) schema, host, path = url.scan(/^(https?:\/\/)?(.+?)(\/.+)$/).flatten raise URI::InvalidURIError, url if path.to_s.empty? CGI::escape("#{schema || 'http://'}#{host}#{path}") end - module_function :verify_and_escape + + def log_error(engine, error) + $stderr.puts "Error pinging #{engine} #{error.message}" + end end