module Eesitemap

Constants

VERSION

Public Class Methods

entry(site, uriprefix, row) click to toggle source
# File lib/eesitemap.rb, line 61
  def self.entry(site, uriprefix, row)
    <<-eos
      <url>
        <loc>#{site}#{uriprefix}#{row[:url_title]}</loc>
        <lastmod>#{Time.now.strftime('%Y-%m-%d')}</lastmod>
        <changefreq>weekly</changefreq>
        <priority>0.5</priority>
      </url>
    eos
  end
generate(cfgfilename) click to toggle source
# File lib/eesitemap.rb, line 10
  def self.generate(cfgfilename)
    cfg = YAML.load(IO.read(cfgfilename))
    params = {
      adapter: cfg['db']['adapter'],
      host: cfg['db']['host'],
      database: cfg['db']['database'],
      user: cfg['db']['user'],
      password: cfg['db']['password']
    }
    db = Sequel.connect(params)

    puts <<-eos
    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" xmlns:geo="http://www.google.com/geo/schemas/sitemap/1.0" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:pagemap="http://www.google.com/schemas/sitemap-pagemap/1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">    
    eos

    puts entry(cfg['site']['url'], "", {url_title: ""})

    cfg['mapnodes'].each do |name, node|
      db["select ct.url_title from exp_structure s, exp_channel_titles ct where s.parent_id = ? and s.entry_id = ct.entry_id", node['parentid']].each do |row|
        puts entry(cfg['site']['url'], node['uriprefix'], row)
      end
    end

    db["select ct.url_title from exp_channel_titles ct, exp_channels c where ct.channel_id=c.channel_id and c.channel_name='Branches'"].each do |row|
      puts entry(cfg['site']['url'], '/branches/', row)
    end

    [145, 155, 165, 175, 185, 195, 205, 215, 225, 235, 245, 255, 265, 275, 285, 295, 305, 315, 325, 335, 345, 355].each do |width|
      [25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80].each do |profile|
        [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24].each do |wheel_size|
          puts entry(cfg['site']['url'], "/search/", {url_title: "#{width}-#{profile}-r#{wheel_size}"})
        end
      end
    end

    manufacturers_list(cfg).each do |manufacturer|
      puts entry(cfg['site']['url'], "/tyres/brand/", {url_title: manufacturer})
      patterns_list(cfg, manufacturer).each do |pattern|
        puts entry(cfg['site']['url'], "/tyres/brand/#{manufacturer}/", {url_title: pattern['permalink']})
        skus_list(cfg, pattern['permalink']).each do |sku|
          puts entry(cfg['site']['url'], "/tyres/brand/#{manufacturer}/#{pattern['permalink']}/", {url_title: sku['tyre_url']})
        end
      end
      break if ENV['DEBUG_EESITEMAP']
    end

    puts "</urlset>"

  end
manufacturers_list(cfg) click to toggle source
# File lib/eesitemap.rb, line 72
def self.manufacturers_list(cfg)
  response = RestClient.get(cfg['site']['api'] + "/manufacturers/" + cfg['site']['code'] + ".json")
  if response.code == 200
    JSON.parse(response.body).map{|o| o['name'].gsub('','') }.uniq      
  else
    []
  end
rescue
  []
end
patterns_list(cfg, manufacturer) click to toggle source
# File lib/eesitemap.rb, line 83
def self.patterns_list(cfg, manufacturer)
  response = RestClient.get(cfg['site']['api'] + "/manufacturers/" + cfg['site']['code'] + "/" + URI::escape(manufacturer) +  ".json")
  if response.code == 200
    JSON.parse(response.body)['products']
  else
    []
  end
rescue 
  []
end
skus_list(cfg, permalink) click to toggle source
# File lib/eesitemap.rb, line 94
def self.skus_list(cfg, permalink)
  response = RestClient.get(cfg['site']['api'] + "/products/" + cfg['site']['code'] + "/" + URI::escape(permalink) +  ".json")
  if response.code == 200
    JSON.parse(response.body)['variants']
  else
    []
  end
rescue 
  []
end