Module: SiteMaps::Ping

Defined in:
lib/site_maps/ping.rb

Constant Summary collapse

ENGINES =
{
  bing: "https://www.bing.com/ping?sitemap=%{url}"
}.freeze

Class Method Summary collapse

Class Method Details

.default_enginesObject



30
31
32
# File 'lib/site_maps/ping.rb', line 30

def default_engines
  ENGINES
end

.ping(sitemap_url, engines: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/site_maps/ping.rb', line 12

def ping(sitemap_url, engines: nil)
  engines ||= ENGINES
  encoded_url = ERB::Util.url_encode(sitemap_url)

  engines.each_with_object({}) do |(name, url_template), results|
    ping_url = url_template % {url: encoded_url}
    uri = URI.parse(ping_url)

    response = Net::HTTP.get_response(uri)
    results[name] = {status: response.code.to_i, url: ping_url}

    SiteMaps.logger.info("[SiteMaps] Pinged #{name}: #{response.code} - #{ping_url}")
  rescue => e
    results[name] = {status: nil, error: e.message, url: ping_url}
    SiteMaps.logger.warn("[SiteMaps] Failed to ping #{name}: #{e.message}")
  end
end