eesitemap 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f89765c74f8711215edff2fc79909913eb69c063
4
+ data.tar.gz: 50119a0bd9a38239ecb4e5791a9bbde95de78d4b
5
+ SHA512:
6
+ metadata.gz: e9c3e1e7d11a5edbbfb04f93d6c669eebc5ce793425b86cf5a1f7d8c91c107e1a39e1f7f530f2c3c19788a5dda751d1cf6756d287c27badeb388d2b5b1ed68ca
7
+ data.tar.gz: 9dcef7a9e1400417444ced0fe56cc15f688495062d75788971f58d9700b9daf78da701372b6d4dbf9a7b7703753e764f396c8b39c60d10e6d03c2194cdf71c5f
data/.gitignore ADDED
@@ -0,0 +1,24 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
23
+ eesitemap.yml
24
+ *.swp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in eesitemap.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 EmergeAdapt
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Ijonas Kisselbach
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Eesitemap
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'eesitemap'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install eesitemap
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it ( https://github.com/[my-github-username]/eesitemap/fork )
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/bin/eesitemap ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ require 'eesitemap'
5
+
6
+ Eesitemap::generate(ARGV[0])
data/eesitemap.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'eesitemap/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "eesitemap"
8
+ spec.version = Eesitemap::VERSION
9
+ spec.authors = ["Ijonas Kisselbach"]
10
+ spec.email = ["ijonas.kisselbach@gmail.com"]
11
+ spec.summary = %q{Generates a EE Sitemap}
12
+ spec.description = %q{None.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.6"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_dependency "sequel"
24
+ spec.add_dependency "mysql2"
25
+ end
@@ -0,0 +1,15 @@
1
+ ---
2
+ site:
3
+ url: "http://www.yoursite.co.uk"
4
+ api: "http://api.yoursite.co.uk"
5
+ code: "somecode"
6
+ db:
7
+ adapter: mysql2
8
+ host: localhost
9
+ user: root
10
+ password: secret
11
+ database: ee
12
+ mapnodes:
13
+ toplevel:
14
+ uriprefix: '/'
15
+ parentid: 0
@@ -0,0 +1,3 @@
1
+ module Eesitemap
2
+ VERSION = "0.0.1"
3
+ end
data/lib/eesitemap.rb ADDED
@@ -0,0 +1,94 @@
1
+ require "eesitemap/version"
2
+ require "sequel"
3
+ require "yaml"
4
+ require "time"
5
+ require "restclient"
6
+ require "json"
7
+ require "uri"
8
+
9
+ module Eesitemap
10
+ def self.generate(cfgfilename)
11
+ cfg = YAML.load(IO.read(cfgfilename))
12
+ params = {
13
+ adapter: cfg['db']['adapter'],
14
+ host: cfg['db']['host'],
15
+ database: cfg['db']['database'],
16
+ user: cfg['db']['user'],
17
+ password: cfg['db']['password']
18
+ }
19
+ db = Sequel.connect(params)
20
+
21
+ puts <<-eos
22
+ <?xml version="1.0" encoding="UTF-8"?>
23
+ <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">
24
+ eos
25
+
26
+ puts entry(cfg['site']['url'], "", {url_title: ""})
27
+
28
+ cfg['mapnodes'].each do |name, node|
29
+ 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|
30
+ puts entry(cfg['site']['url'], node['uriprefix'], row)
31
+ end
32
+ end
33
+
34
+ [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|
35
+ [25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80].each do |profile|
36
+ [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24].each do |wheel_size|
37
+ puts entry(cfg['site']['url'], "/search/", {url_title: "#{width}-#{profile}-r#{wheel_size}"})
38
+ end
39
+ end
40
+ end
41
+
42
+ manufacturers_list(cfg).each do |manufacturer|
43
+ puts entry(cfg['site']['url'], "/tyres/brand/", {url_title: manufacturer})
44
+ patterns_list(cfg, manufacturer).each do |pattern|
45
+ puts entry(cfg['site']['url'], "/tyres/brand/#{manufacturer}/", {url_title: pattern['permalink']})
46
+ skus_list(cfg, pattern['permalink']).each do |sku|
47
+ puts entry(cfg['site']['url'], "/tyres/brand/#{manufacturer}/#{pattern['permalink']}/", {url_title: sku['tyre_url']})
48
+ end
49
+ end
50
+ break if ENV['DEBUG_EESITEMAP']
51
+ end
52
+
53
+ puts "</urlset>"
54
+
55
+ end
56
+
57
+ def self.entry(site, uriprefix, row)
58
+ <<-eos
59
+ <url>
60
+ <loc>#{site}#{uriprefix}#{row[:url_title]}</loc>
61
+ <lastmod>#{Time.now.strftime('%Y-%m-%d')}</lastmod>
62
+ <changefreq>weekly</changefreq>
63
+ <priority>0.5</priority>
64
+ </url>
65
+ eos
66
+ end
67
+
68
+ def self.manufacturers_list(cfg)
69
+ response = RestClient.get(cfg['site']['api'] + "/manufacturers/" + cfg['site']['code'] + ".json")
70
+ if response.code == 200
71
+ JSON.parse(response.body).map{|o| o['name'].gsub('','') }.uniq
72
+ else
73
+ []
74
+ end
75
+ end
76
+
77
+ def self.patterns_list(cfg, manufacturer)
78
+ response = RestClient.get(cfg['site']['api'] + "/manufacturers/" + cfg['site']['code'] + "/" + URI::escape(manufacturer) + ".json")
79
+ if response.code == 200
80
+ JSON.parse(response.body)['products']
81
+ else
82
+ []
83
+ end
84
+ end
85
+
86
+ def self.skus_list(cfg, permalink)
87
+ response = RestClient.get(cfg['site']['api'] + "/products/" + cfg['site']['code'] + "/" + permalink + ".json")
88
+ if response.code == 200
89
+ JSON.parse(response.body)['variants']
90
+ else
91
+ []
92
+ end
93
+ end
94
+ end
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eesitemap
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ijonas Kisselbach
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sequel
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mysql2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: None.
70
+ email:
71
+ - ijonas.kisselbach@gmail.com
72
+ executables:
73
+ - eesitemap
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - Gemfile
79
+ - LICENSE
80
+ - LICENSE.txt
81
+ - README.md
82
+ - Rakefile
83
+ - bin/eesitemap
84
+ - eesitemap.gemspec
85
+ - eesitemap.yml.example
86
+ - lib/eesitemap.rb
87
+ - lib/eesitemap/version.rb
88
+ homepage: ''
89
+ licenses:
90
+ - MIT
91
+ metadata: {}
92
+ post_install_message:
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ requirements: []
107
+ rubyforge_project:
108
+ rubygems_version: 2.2.2
109
+ signing_key:
110
+ specification_version: 4
111
+ summary: Generates a EE Sitemap
112
+ test_files: []