Class: Middleman::SitemapPing

Inherits:
Extension
  • Object
show all
Defined in:
lib/middleman-sitemap-ping.rb,
lib/middleman-sitemap-ping/version.rb

Constant Summary collapse

SERVICES =
{
  google: 'http://www.google.com/webmasters/tools/ping?sitemap=%SITEMAP_URL%',
  bing:   'http://www.bing.com/ping?sitemap=%SITEMAP_URL%'
}
VERSION =
'0.2.0'

Instance Method Summary collapse

Constructor Details

#initialize(app, options_hash = {}) ⇒ SitemapPing

Returns a new instance of SitemapPing.



17
18
19
20
21
# File 'lib/middleman-sitemap-ping.rb', line 17

def initialize(app, options_hash = {})
  super

  require 'open-uri'
end

Instance Method Details

#after_build(builder) ⇒ Object



23
24
25
26
27
# File 'lib/middleman-sitemap-ping.rb', line 23

def after_build(builder)
  if options.after_build
    self.do_ping builder
  end
end

#do_ping(builder) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/middleman-sitemap-ping.rb', line 29

def do_ping(builder)
  raise 'Please set the `host` option for the sitemap ping extension!' unless host = options.host
  host = "http://#{host}" unless host =~ %r(\Ahttps?://)
  sitemap_url = File.join(host, options.sitemap_file)
  SERVICES.each do |service, url|
    next unless options.send("ping_#{service}")
    url.sub! /%SITEMAP_URL%\z/, CGI.escape(sitemap_url)
    builder.say "Pinging #{url}"
    open url do |f|
      if f.status[0] == '200'
        builder.say_status :success, 'SUCCESS!', :green
      else
        builder.say_status :error, "ERROR: #{f.status[0]}", :red
      end
    end
  end
end