sape 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/lib/app/helpers/sape_helper.rb +3 -3
- data/lib/app/models/sape_config.rb +3 -3
- data/lib/generators/sape/templates/migration.rb +3 -1
- data/lib/sape/fetcher.rb +11 -11
- data/lib/sape/version.rb +1 -1
- data/lib/tasks/sape.rake +16 -14
- data/spec/dummy/Gemfile +1 -1
- data/spec/dummy/config/sape.yml +6 -0
- data/spec/dummy/db/migrate/20140715193855_create_sape_storage.rb +5 -3
- data/spec/dummy/db/schema.rb +6 -4
- data/spec/fixtures/sape.yml +4 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6bb0853e31de1b10077c70056900dd4ce842964b
|
4
|
+
data.tar.gz: 7b3ad0343f91a2597dee1364b48f363a37742b62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f2933e1e758f069b46a4a6aefdb1a95c92f297b8fe117ac70702b9b4354d6f7d1580f21b9f6ab8cfa9c51fee658e40e8ed25591fade75573a95cdd1e24c30d1
|
7
|
+
data.tar.gz: 902a0313a2e93fee8373a5455da86d2a5a1e69fb245ce3d57ed0acdbd8c63f4f01752c120afe1887164c2d3120aae23bf1ed385a4384328de37c03ca5aa90808
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module SapeHelper
|
2
2
|
def sape_links_block
|
3
3
|
request.original_fullpath.chomp!("/") if request.original_fullpath.last == "/" && request.original_fullpath != '/'
|
4
|
-
options = { links: SapeLink.where(page: request.original_fullpath, link_type: "simple") }
|
4
|
+
options = { links: SapeLink.where(page: request.original_fullpath, link_type: "simple", site_host: request.host) }
|
5
5
|
if SapeConfig.bot_ips.include?(request.remote_addr)
|
6
6
|
options.merge!(check_code: SapeConfig.check_code)
|
7
7
|
end
|
@@ -13,7 +13,7 @@ module SapeHelper
|
|
13
13
|
|
14
14
|
def sape_links
|
15
15
|
request.original_fullpath.chomp!("/") if request.original_fullpath.last == "/" && request.original_fullpath != '/'
|
16
|
-
links = SapeLink.where(page: request.original_fullpath, link_type: "simple").
|
16
|
+
links = SapeLink.where(page: request.original_fullpath, link_type: "simple", site_host: request.host).
|
17
17
|
pluck(:raw_link).
|
18
18
|
join(SapeConfig.delimiter)
|
19
19
|
|
@@ -24,7 +24,7 @@ module SapeHelper
|
|
24
24
|
|
25
25
|
def sape_context_links(text)
|
26
26
|
request.original_fullpath.chomp!("/") if request.original_fullpath.last == "/" && request.original_fullpath != '/'
|
27
|
-
SapeLink.where(page: request.original_fullpath, link_type: "context").each do |link|
|
27
|
+
SapeLink.where(page: request.original_fullpath, link_type: "context", site_host: request.host).each do |link|
|
28
28
|
text.sub!(link.anchor, link.raw_link)
|
29
29
|
end
|
30
30
|
|
@@ -1,15 +1,15 @@
|
|
1
1
|
class SapeConfig < ActiveRecord::Base
|
2
2
|
class << self
|
3
3
|
def bot_ips
|
4
|
-
where(name: 'ip').pluck(:value)
|
4
|
+
where(name: 'ip', site_host: request.host).pluck(:value)
|
5
5
|
end
|
6
6
|
|
7
7
|
def check_code
|
8
|
-
where(name: 'sape_new_url').first.try(:value) || " "
|
8
|
+
where(name: 'sape_new_url', site_host: request.host).first.try(:value) || " "
|
9
9
|
end
|
10
10
|
|
11
11
|
def delimiter
|
12
|
-
where(name: 'sape_delimiter').first.try(:value) || " "
|
12
|
+
where(name: 'sape_delimiter', site_host: request.host).first.try(:value) || " "
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
class CreateSapeStorage < ActiveRecord::Migration
|
2
2
|
def change
|
3
3
|
create_table :sape_configs do |t|
|
4
|
+
t.string :site_host
|
4
5
|
t.string :name
|
5
6
|
t.text :value, limit: 500
|
6
7
|
end
|
7
8
|
|
8
9
|
create_table :sape_links do |t|
|
10
|
+
t.string :site_host
|
9
11
|
t.string :page
|
10
12
|
t.string :anchor
|
11
13
|
t.string :url
|
@@ -13,6 +15,6 @@ class CreateSapeStorage < ActiveRecord::Migration
|
|
13
15
|
t.text :raw_link, limit: 500
|
14
16
|
t.string :link_type
|
15
17
|
end
|
16
|
-
add_index :sape_links, [:link_type, :page]
|
18
|
+
add_index :sape_links, [:link_type, :page, :site_host]
|
17
19
|
end
|
18
20
|
end
|
data/lib/sape/fetcher.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'nokogiri'
|
2
2
|
require 'open-uri'
|
3
|
+
require 'domainatrix'
|
3
4
|
|
4
5
|
class Fetcher
|
5
6
|
class << self
|
@@ -8,15 +9,14 @@ class Fetcher
|
|
8
9
|
puts text if Rails.env.development?
|
9
10
|
end
|
10
11
|
|
11
|
-
def get_data(config, link_type)
|
12
|
+
def get_data(config, link_type, site_host)
|
12
13
|
|
13
14
|
sape_user = config['sape_user']
|
14
|
-
host = config['host'].downcase
|
15
15
|
charset = config['charset'] || 'utf-8'
|
16
16
|
server = config['server'] || 'dispenser-01.sape.ru'
|
17
17
|
links_type = {'simple' => 'code.php', 'context' => 'code_context.php'}
|
18
18
|
|
19
|
-
url = "http://#{server}/#{links_type[link_type]}?user=#{sape_user}&host=#{
|
19
|
+
url = "http://#{server}/#{links_type[link_type]}?user=#{sape_user}&host=#{site_host}&format=json&no_slash_fix=true"
|
20
20
|
|
21
21
|
begin
|
22
22
|
data = open(url)
|
@@ -27,8 +27,8 @@ class Fetcher
|
|
27
27
|
JSON.parse(data.read)
|
28
28
|
end
|
29
29
|
|
30
|
-
def fetch_pages(pages, link_type, delete_old = false)
|
31
|
-
SapeLink.delete_all if delete_old
|
30
|
+
def fetch_pages(pages, link_type, delete_old = false, site_host)
|
31
|
+
SapeLink.where(site_host: site_host).delete_all if delete_old
|
32
32
|
say "Links:: #{link_type}"
|
33
33
|
pages.each do |page_url, links|
|
34
34
|
say "Page: #{page_url}"
|
@@ -37,15 +37,15 @@ class Fetcher
|
|
37
37
|
|
38
38
|
anchor = item.css('a').text
|
39
39
|
url = item.css('a').attr('href').text
|
40
|
-
|
41
|
-
SapeLink.create page: page_url, anchor: anchor, host:
|
42
|
-
say " Added #{anchor} #{
|
40
|
+
url_host = Domainatrix.parse(url).host
|
41
|
+
SapeLink.create site_host: site_host, page: page_url, anchor: anchor, host: url_host, raw_link: link, url: url, link_type: link_type
|
42
|
+
say " Added #{site_host} :: #{anchor} #{url_host} #{url}"
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
def fetch_config(config_data, bot_ips)
|
48
|
-
SapeConfig.delete_all
|
47
|
+
def fetch_config(config_data, bot_ips, site_host)
|
48
|
+
SapeConfig.where(site_host: site_host).delete_all
|
49
49
|
say "Ips:"
|
50
50
|
bot_ips.each do |ip|
|
51
51
|
SapeConfig.create name: 'ip', value: ip
|
@@ -53,7 +53,7 @@ class Fetcher
|
|
53
53
|
end
|
54
54
|
say "Config"
|
55
55
|
config_data.each do |item, data|
|
56
|
-
SapeConfig.create name: item, value: data
|
56
|
+
SapeConfig.create site_host: site_host, name: item, value: data
|
57
57
|
say " Added #{item} = #{data}"
|
58
58
|
end
|
59
59
|
end
|
data/lib/sape/version.rb
CHANGED
data/lib/tasks/sape.rake
CHANGED
@@ -3,26 +3,28 @@ namespace :sape do
|
|
3
3
|
desc "Fetch links from server"
|
4
4
|
task fetch: :environment do
|
5
5
|
begin
|
6
|
-
config = YAML.load_file('config/sape.yml')
|
6
|
+
config = YAML.load_file('config/sape.yml')
|
7
7
|
rescue Errno::ENOENT
|
8
8
|
fail "Config file not found (config/sape.yml)"
|
9
9
|
end
|
10
|
+
[*config['host']].each do |site_host|
|
11
|
+
puts "Start work with: #{site_host}" if Rails.env.development?
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
data = Fetcher.get_data(config, 'simple', site_host)
|
14
|
+
data_context = Fetcher.get_data(config, 'context', site_host)
|
15
|
+
configs, config_data = {}, {}
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
pages = data['__sape_links__']
|
18
|
+
pages_context = data_context['__sape_links__']
|
19
|
+
bot_ips = data['__sape_ips__']
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
Fetcher.fetch_config(config_data, bot_ips) if pages.any?
|
24
|
-
Fetcher.fetch_pages(pages, 'simple', true) if pages.any?
|
25
|
-
Fetcher.fetch_pages(pages_context, 'context') if pages_context.any?
|
21
|
+
%W{sape_delimiter sape_show_only_block sape_page_obligatory_output sape_new_url}.each do |item|
|
22
|
+
config_data[item] = data["__#{item}__"]
|
23
|
+
end
|
26
24
|
|
25
|
+
Fetcher.fetch_config(config_data, bot_ips, site_host) if pages.any?
|
26
|
+
Fetcher.fetch_pages(pages, 'simple', true, site_host) if pages.any?
|
27
|
+
Fetcher.fetch_pages(pages_context, 'context', false, site_host) if pages_context.any?
|
28
|
+
end
|
27
29
|
end
|
28
30
|
end
|
data/spec/dummy/Gemfile
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
class CreateSapeStorage < ActiveRecord::Migration
|
2
2
|
def change
|
3
3
|
create_table :sape_configs do |t|
|
4
|
+
t.string :site_host
|
4
5
|
t.string :name
|
5
|
-
t.
|
6
|
+
t.text :value, limit: 500
|
6
7
|
end
|
7
8
|
|
8
9
|
create_table :sape_links do |t|
|
10
|
+
t.string :site_host
|
9
11
|
t.string :page
|
10
12
|
t.string :anchor
|
11
13
|
t.string :url
|
12
14
|
t.string :host
|
13
|
-
t.
|
15
|
+
t.text :raw_link, limit: 500
|
14
16
|
t.string :link_type
|
15
17
|
end
|
16
|
-
add_index :sape_links, [:link_type, :page]
|
18
|
+
add_index :sape_links, [:link_type, :page, :site_host]
|
17
19
|
end
|
18
20
|
end
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -11,22 +11,24 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20141225123124) do
|
15
15
|
|
16
16
|
create_table "sape_configs", force: true do |t|
|
17
|
+
t.string "site_host"
|
17
18
|
t.string "name"
|
18
|
-
t.
|
19
|
+
t.text "value", limit: 500
|
19
20
|
end
|
20
21
|
|
21
22
|
create_table "sape_links", force: true do |t|
|
23
|
+
t.string "site_host"
|
22
24
|
t.string "page"
|
23
25
|
t.string "anchor"
|
24
26
|
t.string "url"
|
25
27
|
t.string "host"
|
26
|
-
t.
|
28
|
+
t.text "raw_link", limit: 500
|
27
29
|
t.string "link_type"
|
28
30
|
end
|
29
31
|
|
30
|
-
add_index "sape_links", ["link_type", "page"], name: "
|
32
|
+
add_index "sape_links", ["link_type", "page", "site_host"], name: "index_sape_links_on_link_type_and_page_and_site_host"
|
31
33
|
|
32
34
|
end
|
data/spec/fixtures/sape.yml
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sape
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Rodionov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -258,6 +258,7 @@ files:
|
|
258
258
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
259
259
|
- spec/dummy/config/locales/en.yml
|
260
260
|
- spec/dummy/config/routes.rb
|
261
|
+
- spec/dummy/config/sape.yml
|
261
262
|
- spec/dummy/config/secrets.yml
|
262
263
|
- spec/dummy/db/migrate/20140715193855_create_sape_storage.rb
|
263
264
|
- spec/dummy/db/schema.rb
|
@@ -307,7 +308,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
307
308
|
version: '0'
|
308
309
|
requirements: []
|
309
310
|
rubyforge_project:
|
310
|
-
rubygems_version: 2.
|
311
|
+
rubygems_version: 2.4.5
|
311
312
|
signing_key:
|
312
313
|
specification_version: 4
|
313
314
|
summary: Sape.ru Ruby On Rails module
|
@@ -349,6 +350,7 @@ test_files:
|
|
349
350
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
350
351
|
- spec/dummy/config/locales/en.yml
|
351
352
|
- spec/dummy/config/routes.rb
|
353
|
+
- spec/dummy/config/sape.yml
|
352
354
|
- spec/dummy/config/secrets.yml
|
353
355
|
- spec/dummy/db/migrate/20140715193855_create_sape_storage.rb
|
354
356
|
- spec/dummy/db/schema.rb
|