wovnrb 0.1.79 → 0.1.80
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +5 -0
- data/circle.yml +8 -0
- data/lib/wovnrb.rb +11 -3
- data/lib/wovnrb/store.rb +25 -33
- data/lib/wovnrb/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/test/lib/headers_test.rb +1 -2
- data/test/lib/store_test.rb +37 -0
- data/test/lib/wovnrb_test.rb +27 -10
- data/test/services/url_test.rb +1 -1
- data/wovnrb.gemspec +0 -1
- metadata +36 -47
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0d481a935a4b41b24d790ef3652d6922d1435c3
|
4
|
+
data.tar.gz: a885a5859edc04170ce1a078c8a84ce4d554b0c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ea5bbe493481c7f827a1ffae7c0ad443de64e5977368165aba51ae94cf577489c025aafbbf6cfaca43f2b5226a8efcd24dc3d46d541f4e48261f77c570706cc
|
7
|
+
data.tar.gz: 15e76d5ea1a873e738d02820b07d00bc11305faec6facea7efbf2b115746455cac3693c1f323cf2da44f38d8e17a68f5cdd50abe38108a14566b06412e352a39
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/circle.yml
ADDED
data/lib/wovnrb.rb
CHANGED
@@ -12,8 +12,10 @@ module Wovnrb
|
|
12
12
|
STORE = Store.new
|
13
13
|
|
14
14
|
class Interceptor
|
15
|
-
def initialize(app)
|
15
|
+
def initialize(app, opts={})
|
16
16
|
@app = app
|
17
|
+
opts = opts.each_with_object({}){|(k,v),memo| memo[k.to_s]=v}
|
18
|
+
STORE.settings(opts)
|
17
19
|
end
|
18
20
|
|
19
21
|
def call(env)
|
@@ -139,7 +141,7 @@ module Wovnrb
|
|
139
141
|
d.encoding = "UTF-8"
|
140
142
|
|
141
143
|
# If this page has wovn-ignore in the html tag, don't do anything
|
142
|
-
if ignore_all || d.xpath('//html[@wovn-ignore]').
|
144
|
+
if ignore_all || !d.xpath('//html[@wovn-ignore]').empty?
|
143
145
|
ignore_all = true
|
144
146
|
output = d.to_html.gsub(/href="([^"]*)"/) { |m| "href=\"#{URI.decode($1)}\"" }
|
145
147
|
new_body.push(output)
|
@@ -168,7 +170,7 @@ module Wovnrb
|
|
168
170
|
# swap meta tag values
|
169
171
|
d.xpath('//meta').select { |t|
|
170
172
|
next if check_wovn_ignore(t)
|
171
|
-
(t.get_attribute('name') || t.get_attribute('property') || '') =~ /^(description|
|
173
|
+
(t.get_attribute('name') || t.get_attribute('property') || '') =~ /^(description|title|og:title|og:description|twitter:title|twitter:description)$/
|
172
174
|
}.each do |node|
|
173
175
|
node_content = node.get_attribute('content').strip
|
174
176
|
# shouldn't need size check, but for now...
|
@@ -199,6 +201,12 @@ module Wovnrb
|
|
199
201
|
node.attribute('src').value = "#{img_src_prefix}#{src_index[src][lang][0]['data']}"
|
200
202
|
end
|
201
203
|
end
|
204
|
+
if node.get_attribute('alt')
|
205
|
+
alt = node.get_attribute('alt').strip
|
206
|
+
if text_index[alt] && text_index[alt][lang] && text_index[alt][lang].size > 0
|
207
|
+
node.attribute('alt').value = alt.gsub(/^(\s*)[\S\s]*(\s*)$/, '\1' + text_index[alt][lang][0]['data'] + '\2')
|
208
|
+
end
|
209
|
+
end
|
202
210
|
end
|
203
211
|
|
204
212
|
# REMOVE WIDGET
|
data/lib/wovnrb/store.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
require 'redis'
|
2
1
|
require 'net/http'
|
3
|
-
require '
|
2
|
+
require 'uri'
|
4
3
|
require 'cgi'
|
5
|
-
require '
|
4
|
+
require 'logger' unless defined?(Logger)
|
6
5
|
|
7
6
|
module Wovnrb
|
8
7
|
|
9
8
|
class Store
|
10
|
-
attr_reader :settings
|
11
9
|
|
12
10
|
def initialize
|
13
11
|
@settings =
|
@@ -21,8 +19,7 @@ module Wovnrb
|
|
21
19
|
#'url_pattern' => 'subdomain',
|
22
20
|
#'url_pattern_reg' => "^(?<lang>[^.]+)\.",
|
23
21
|
'query' => [],
|
24
|
-
'
|
25
|
-
'backend_port' => '6379',
|
22
|
+
'api_url' => 'https://api.wovn.io/v0/values',
|
26
23
|
'default_lang' => 'en',
|
27
24
|
'supported_langs' => ['en'],
|
28
25
|
'test_mode' => false,
|
@@ -54,13 +51,9 @@ module Wovnrb
|
|
54
51
|
valid = false
|
55
52
|
errors.push("query config #{settings['query']} is not valid.");
|
56
53
|
end
|
57
|
-
if !settings.has_key?('
|
54
|
+
if !settings.has_key?('api_url') || settings['api_url'].length == 0
|
58
55
|
valid = false
|
59
|
-
errors.push("
|
60
|
-
end
|
61
|
-
if !settings.has_key?('backend_port') || settings['backend_port'].length == 0
|
62
|
-
valid = false
|
63
|
-
errors.push("Backend port is not configured.");
|
56
|
+
errors.push("API URL is not configured.")
|
64
57
|
end
|
65
58
|
if !settings.has_key?('default_lang') || settings['default_lang'].length == 0
|
66
59
|
valid = false
|
@@ -83,7 +76,12 @@ module Wovnrb
|
|
83
76
|
# Returns the settings object, pulling from Rails config the first time this is called
|
84
77
|
#
|
85
78
|
# @return [Hash] The settings which are pulled from the config file given by the user and filled in by defaults
|
86
|
-
def settings
|
79
|
+
def settings(*opts)
|
80
|
+
if !opts.first.nil?
|
81
|
+
@settings.merge!(opts.first)
|
82
|
+
@config_loaded = false
|
83
|
+
end
|
84
|
+
|
87
85
|
if !@config_loaded
|
88
86
|
# get Rails config.wovnrb
|
89
87
|
if Object.const_defined?('Rails') && Rails.configuration.respond_to?(:wovnrb)
|
@@ -98,7 +96,6 @@ module Wovnrb
|
|
98
96
|
end
|
99
97
|
|
100
98
|
# fix settings object
|
101
|
-
@settings['backend_port'] = @settings['backend_port'].to_s
|
102
99
|
@settings['default_lang'] = Lang.get_code(@settings['default_lang'])
|
103
100
|
if !@settings.has_key?('supported_langs')
|
104
101
|
@settings['supported_langs'] = [@settings['default_lang']]
|
@@ -127,30 +124,25 @@ module Wovnrb
|
|
127
124
|
# @return [Hash] The values Hash for the passed in url
|
128
125
|
def get_values(url)
|
129
126
|
url = url.gsub(/\/$/, '')
|
130
|
-
redis_key = 'WOVN:BACKEND:STORAGE:' + url + ':' + settings['user_token']
|
131
|
-
cli = Redis.new(host: settings['backend_host'], port: settings['backend_port'])
|
132
127
|
|
133
128
|
begin
|
134
|
-
|
135
|
-
|
129
|
+
uri = URI.parse("#{settings['api_url']}?token=#{settings['user_token']}&url=#{url}")
|
130
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
131
|
+
http.use_ssl = true if uri.scheme == 'https'
|
132
|
+
res = http.start {
|
133
|
+
http.get(uri.request_uri)
|
134
|
+
}
|
135
|
+
if res.code == "200"
|
136
|
+
vals = JSON.parse(res.body || '{}')
|
137
|
+
else
|
138
|
+
vals = {}
|
139
|
+
end
|
136
140
|
rescue
|
137
|
-
logger = Logger.new('../error.log')
|
138
|
-
logger.error("Redis GET request failed with the following parameters:\nhost: #{settings['backend_host']}\nport: #{settings['backend_port']}\nkey: #{redis_key}")
|
139
141
|
vals = {}
|
142
|
+
logger = Logger.new('../error.log')
|
143
|
+
logger.error("API server GET request failed with the following parameters:\napi_url: #{settings['api_url']}\ntoken: #{settings['user_token']}\nurl: #{url}")
|
140
144
|
end
|
141
|
-
|
142
|
-
host = 'ee.wovn.io'
|
143
|
-
post_data = "{\"user_token\":\"#{settings['user_token']}\", \"url\":#{url.to_json}}"
|
144
|
-
headers = "Host: #{host}\r\nContent-Type: application/json;charset=UTF-8\r\nContent-Length: #{post_data.bytesize}\r\nConnection: close\r\n\r\n"
|
145
|
-
s = TCPSocket.new(host, 80)
|
146
|
-
s.puts "POST /pages/cache_backend HTTP/1.1\r\n#{headers}#{post_data}"
|
147
|
-
s.close
|
148
|
-
end
|
149
|
-
# handle this on the widget
|
150
|
-
#if vals.empty?
|
151
|
-
# uri = URI.parse('http://api.wovn.io/v0/page/add')
|
152
|
-
# Net::HTTP.post_form(uri, :user_token => user_token, :secret_key => @settings['secret_key'], :url => url)
|
153
|
-
#end
|
145
|
+
|
154
146
|
vals
|
155
147
|
end
|
156
148
|
|
data/lib/wovnrb/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
require 'pry'
|
2
|
-
require '
|
2
|
+
require 'wovnrb'
|
data/test/lib/headers_test.rb
CHANGED
@@ -5821,8 +5821,7 @@ class HeadersTest < Minitest::Test
|
|
5821
5821
|
settings['url_pattern'] = 'path'
|
5822
5822
|
settings['url_pattern_reg'] = "/(?<lang>[^/.?]+)"
|
5823
5823
|
settings['query'] = []
|
5824
|
-
settings['
|
5825
|
-
settings['backend_port'] = '6379'
|
5824
|
+
settings['api_url'] = 'http://localhost/v0/values'
|
5826
5825
|
settings['default_lang'] = 'en'
|
5827
5826
|
settings['supported_langs'] = []
|
5828
5827
|
settings['secret_key'] = ''
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'wovnrb/store'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
class StoreTest < Minitest::Test
|
5
|
+
def test_initialize
|
6
|
+
s = Wovnrb::Store.new
|
7
|
+
refute_nil(s)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_settings_no_parameters
|
11
|
+
s = Wovnrb::Store.new
|
12
|
+
assert_equal('path', s.settings['url_pattern'])
|
13
|
+
assert_equal('/(?<lang>[^/.?]+)', s.settings['url_pattern_reg'])
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_settings_url_pattern_path
|
17
|
+
s = Wovnrb::Store.new
|
18
|
+
s.settings({'url_pattern' => 'path'})
|
19
|
+
assert_equal('path', s.settings['url_pattern'])
|
20
|
+
assert_equal('/(?<lang>[^/.?]+)', s.settings['url_pattern_reg'])
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_settings_url_pattern_subdomain
|
24
|
+
s = Wovnrb::Store.new
|
25
|
+
s.settings({'url_pattern' => 'subdomain'})
|
26
|
+
assert_equal("^(?<lang>[^.]+)\.", s.settings['url_pattern_reg'])
|
27
|
+
assert_equal('subdomain', s.settings['url_pattern'])
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_settings_url_pattern_query
|
31
|
+
s = Wovnrb::Store.new
|
32
|
+
s.settings({'url_pattern' => 'query'})
|
33
|
+
assert_equal('((\\?.*&)|\\?)wovn=(?<lang>[^&]+)(&|$)', s.settings['url_pattern_reg'])
|
34
|
+
assert_equal('query', s.settings['url_pattern'])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
data/test/lib/wovnrb_test.rb
CHANGED
@@ -294,7 +294,7 @@ class WovnrbTest < Minitest::Test
|
|
294
294
|
body = "<html lang=\"ja\">
|
295
295
|
<head>
|
296
296
|
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
|
297
|
-
<script src=\"//j.wovn.io/
|
297
|
+
<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\">
|
298
298
|
</head>
|
299
299
|
<body>
|
300
300
|
<h1>ベルベデアさんファンクラブ</h1>
|
@@ -306,7 +306,7 @@ class WovnrbTest < Minitest::Test
|
|
306
306
|
body = "<html lang=\"ja\">
|
307
307
|
<head>
|
308
308
|
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
|
309
|
-
<script src=\"//j.wovn.io/
|
309
|
+
<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.page.com/\">
|
310
310
|
</head>
|
311
311
|
<body>
|
312
312
|
<h1>ベルベデアさんファンクラブ</h1>
|
@@ -318,7 +318,7 @@ class WovnrbTest < Minitest::Test
|
|
318
318
|
body = "<html lang=\"ja\">
|
319
319
|
<head>
|
320
320
|
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
|
321
|
-
<script src=\"//j.wovn.io/
|
321
|
+
<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\">
|
322
322
|
</head>
|
323
323
|
<body wovn-ignore=\"\">
|
324
324
|
<h1>Mr. Belvedere Fan Club</h1>
|
@@ -337,15 +337,23 @@ class WovnrbTest < Minitest::Test
|
|
337
337
|
when "value_double_quote"
|
338
338
|
body = "<html><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore=\"value\"><p>Hello</p></div></body></html>"
|
339
339
|
when "empty_translated"
|
340
|
-
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/
|
340
|
+
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\">\n</head>\n<body>\n<h1>Mr.BelvedereFanClub</h1>\n<div wovn-ignore=\"\"><p>Hello</p></div>\n</body>\n</html>\n"
|
341
341
|
when "empty_single_quote_translated"
|
342
|
-
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/
|
342
|
+
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\">\n</head>\n<body>\n<h1>Mr.BelvedereFanClub</h1>\n<div wovn-ignore=\"\"><p>Hello</p></div>\n</body>\n</html>\n"
|
343
343
|
when "empty_double_quote_translated"
|
344
|
-
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/
|
344
|
+
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\">\n</head>\n<body>\n<h1>Mr.BelvedereFanClub</h1>\n<div wovn-ignore=\"\"><p>Hello</p></div>\n</body>\n</html>\n"
|
345
345
|
when "value_single_quote_translated"
|
346
|
-
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/
|
346
|
+
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\">\n</head>\n<body>\n<h1>Mr.BelvedereFanClub</h1>\n<div wovn-ignore=\"value\"><p>Hello</p></div>\n</body>\n</html>\n"
|
347
347
|
when "value_double_quote_translated"
|
348
|
-
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/
|
348
|
+
body = "<html lang=\"ja\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\">\n</head>\n<body>\n<h1>Mr.BelvedereFanClub</h1>\n<div wovn-ignore=\"value\"><p>Hello</p></div>\n</body>\n</html>\n"
|
349
|
+
when "meta_img_alt_tags_translated"
|
350
|
+
body = "<html lang=\"ja\">\n<head>\n<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&version=#{Wovnrb::VERSION}\"> </script><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta name=\"description\" content=\"こんにちは\">\n<meta name=\"title\" content=\"こんにちは\">\n<meta property=\"og:title\" content=\"こんにちは\">\n<meta property=\"og:description\" content=\"こんにちは\">\n<meta property=\"twitter:title\" content=\"こんにちは\">\n<meta property=\"twitter:description\" content=\"こんにちは\">\n<link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.page.com/\">\n</head>\n<body>\n<h1>ベルベデアさんファンクラブ</h1>\n<div><p>こんにちは</p></div>\n<img src=\"http://example.com/photo.png\" alt=\"こんにちは\">\n</body>\n</html>\n"
|
351
|
+
when "meta_img_alt_tags"
|
352
|
+
body = "<html><head><meta name =\"description\" content=\"Hello\">\n<meta name=\"title\" content=\"Hello\">\n<meta property=\"og:title\" content=\"Hello\">\n<meta property=\"og:description\" content=\"Hello\">\n<meta property=\"twitter:title\" content=\"Hello\">\n<meta property=\"twitter:description\" content=\"Hello\"></head>
|
353
|
+
<body><h1>Mr. Belvedere Fan Club</h1>
|
354
|
+
<div><p>Hello</p></div>
|
355
|
+
<img src=\"http://example.com/photo.png\" alt=\"Hello\">
|
356
|
+
</body></html>"
|
349
357
|
else # "" case
|
350
358
|
body = "<html><body><h1>Mr. Belvedere Fan Club</h1>
|
351
359
|
<div><p>Hello</p></div>
|
@@ -371,6 +379,16 @@ class WovnrbTest < Minitest::Test
|
|
371
379
|
assert_equal(generate_body('translated_in_japanese'), swapped_body)
|
372
380
|
end
|
373
381
|
|
382
|
+
def test_switch_lang_meta_img_alt_tags
|
383
|
+
i = Wovnrb::Interceptor.new(get_app)
|
384
|
+
h = Wovnrb::Headers.new(get_env('url' => 'http://page.com'), get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
385
|
+
body = generate_body('meta_img_alt_tags')
|
386
|
+
values = generate_values
|
387
|
+
url = h.url
|
388
|
+
swapped_body = i.switch_lang(body, values, url, 'ja', h)
|
389
|
+
assert_equal(generate_body('meta_img_alt_tags_translated'), swapped_body)
|
390
|
+
end
|
391
|
+
|
374
392
|
def test_switch_lang_wovn_ignore
|
375
393
|
i = Wovnrb::Interceptor.new(get_app)
|
376
394
|
h = Wovnrb::Headers.new(get_env('url' => 'http://ignore-page.com'), get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
@@ -447,8 +465,7 @@ class WovnrbTest < Minitest::Test
|
|
447
465
|
settings['url_pattern'] = 'path'
|
448
466
|
settings['url_pattern_reg'] = "/(?<lang>[^/.?]+)"
|
449
467
|
settings['query'] = []
|
450
|
-
settings['
|
451
|
-
settings['backend_port'] = '6379'
|
468
|
+
settings['api_url'] = 'http://localhost/v0/values'
|
452
469
|
settings['default_lang'] = 'en'
|
453
470
|
settings['supported_langs'] = []
|
454
471
|
settings['secret_key'] = ''
|
data/test/services/url_test.rb
CHANGED
data/wovnrb.gemspec
CHANGED
@@ -26,7 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
#spec.extensions = spec.files.grep(%r{/extconf\.rb$})
|
27
27
|
|
28
28
|
spec.add_dependency "nokogumbo", "1.3.0"
|
29
|
-
spec.add_dependency "redis"
|
30
29
|
|
31
30
|
spec.add_development_dependency "bundler", "~> 1.7"
|
32
31
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wovnrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.80
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Sandford
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-03-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogumbo
|
@@ -25,200 +25,186 @@ dependencies:
|
|
25
25
|
- - '='
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 1.3.0
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: redis
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - '>='
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '0'
|
35
|
-
type: :runtime
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - '>='
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '0'
|
42
28
|
- !ruby/object:Gem::Dependency
|
43
29
|
name: bundler
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
45
31
|
requirements:
|
46
|
-
- - ~>
|
32
|
+
- - "~>"
|
47
33
|
- !ruby/object:Gem::Version
|
48
34
|
version: '1.7'
|
49
35
|
type: :development
|
50
36
|
prerelease: false
|
51
37
|
version_requirements: !ruby/object:Gem::Requirement
|
52
38
|
requirements:
|
53
|
-
- - ~>
|
39
|
+
- - "~>"
|
54
40
|
- !ruby/object:Gem::Version
|
55
41
|
version: '1.7'
|
56
42
|
- !ruby/object:Gem::Dependency
|
57
43
|
name: rake
|
58
44
|
requirement: !ruby/object:Gem::Requirement
|
59
45
|
requirements:
|
60
|
-
- - ~>
|
46
|
+
- - "~>"
|
61
47
|
- !ruby/object:Gem::Version
|
62
48
|
version: '10.0'
|
63
49
|
type: :development
|
64
50
|
prerelease: false
|
65
51
|
version_requirements: !ruby/object:Gem::Requirement
|
66
52
|
requirements:
|
67
|
-
- - ~>
|
53
|
+
- - "~>"
|
68
54
|
- !ruby/object:Gem::Version
|
69
55
|
version: '10.0'
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: test-unit
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
73
59
|
requirements:
|
74
|
-
- -
|
60
|
+
- - ">="
|
75
61
|
- !ruby/object:Gem::Version
|
76
62
|
version: '0'
|
77
63
|
type: :development
|
78
64
|
prerelease: false
|
79
65
|
version_requirements: !ruby/object:Gem::Requirement
|
80
66
|
requirements:
|
81
|
-
- -
|
67
|
+
- - ">="
|
82
68
|
- !ruby/object:Gem::Version
|
83
69
|
version: '0'
|
84
70
|
- !ruby/object:Gem::Dependency
|
85
71
|
name: test-unit-notify
|
86
72
|
requirement: !ruby/object:Gem::Requirement
|
87
73
|
requirements:
|
88
|
-
- -
|
74
|
+
- - ">="
|
89
75
|
- !ruby/object:Gem::Version
|
90
76
|
version: '0'
|
91
77
|
type: :development
|
92
78
|
prerelease: false
|
93
79
|
version_requirements: !ruby/object:Gem::Requirement
|
94
80
|
requirements:
|
95
|
-
- -
|
81
|
+
- - ">="
|
96
82
|
- !ruby/object:Gem::Version
|
97
83
|
version: '0'
|
98
84
|
- !ruby/object:Gem::Dependency
|
99
85
|
name: minitest
|
100
86
|
requirement: !ruby/object:Gem::Requirement
|
101
87
|
requirements:
|
102
|
-
- -
|
88
|
+
- - ">="
|
103
89
|
- !ruby/object:Gem::Version
|
104
90
|
version: '0'
|
105
91
|
type: :development
|
106
92
|
prerelease: false
|
107
93
|
version_requirements: !ruby/object:Gem::Requirement
|
108
94
|
requirements:
|
109
|
-
- -
|
95
|
+
- - ">="
|
110
96
|
- !ruby/object:Gem::Version
|
111
97
|
version: '0'
|
112
98
|
- !ruby/object:Gem::Dependency
|
113
99
|
name: terminal-notifier
|
114
100
|
requirement: !ruby/object:Gem::Requirement
|
115
101
|
requirements:
|
116
|
-
- -
|
102
|
+
- - ">="
|
117
103
|
- !ruby/object:Gem::Version
|
118
104
|
version: '0'
|
119
105
|
type: :development
|
120
106
|
prerelease: false
|
121
107
|
version_requirements: !ruby/object:Gem::Requirement
|
122
108
|
requirements:
|
123
|
-
- -
|
109
|
+
- - ">="
|
124
110
|
- !ruby/object:Gem::Version
|
125
111
|
version: '0'
|
126
112
|
- !ruby/object:Gem::Dependency
|
127
113
|
name: guard
|
128
114
|
requirement: !ruby/object:Gem::Requirement
|
129
115
|
requirements:
|
130
|
-
- -
|
116
|
+
- - ">="
|
131
117
|
- !ruby/object:Gem::Version
|
132
118
|
version: '0'
|
133
119
|
type: :development
|
134
120
|
prerelease: false
|
135
121
|
version_requirements: !ruby/object:Gem::Requirement
|
136
122
|
requirements:
|
137
|
-
- -
|
123
|
+
- - ">="
|
138
124
|
- !ruby/object:Gem::Version
|
139
125
|
version: '0'
|
140
126
|
- !ruby/object:Gem::Dependency
|
141
127
|
name: guard-rspec
|
142
128
|
requirement: !ruby/object:Gem::Requirement
|
143
129
|
requirements:
|
144
|
-
- -
|
130
|
+
- - ">="
|
145
131
|
- !ruby/object:Gem::Version
|
146
132
|
version: '0'
|
147
133
|
type: :development
|
148
134
|
prerelease: false
|
149
135
|
version_requirements: !ruby/object:Gem::Requirement
|
150
136
|
requirements:
|
151
|
-
- -
|
137
|
+
- - ">="
|
152
138
|
- !ruby/object:Gem::Version
|
153
139
|
version: '0'
|
154
140
|
- !ruby/object:Gem::Dependency
|
155
141
|
name: pry
|
156
142
|
requirement: !ruby/object:Gem::Requirement
|
157
143
|
requirements:
|
158
|
-
- -
|
144
|
+
- - ">="
|
159
145
|
- !ruby/object:Gem::Version
|
160
146
|
version: '0'
|
161
147
|
type: :development
|
162
148
|
prerelease: false
|
163
149
|
version_requirements: !ruby/object:Gem::Requirement
|
164
150
|
requirements:
|
165
|
-
- -
|
151
|
+
- - ">="
|
166
152
|
- !ruby/object:Gem::Version
|
167
153
|
version: '0'
|
168
154
|
- !ruby/object:Gem::Dependency
|
169
155
|
name: pry-remote
|
170
156
|
requirement: !ruby/object:Gem::Requirement
|
171
157
|
requirements:
|
172
|
-
- -
|
158
|
+
- - ">="
|
173
159
|
- !ruby/object:Gem::Version
|
174
160
|
version: '0'
|
175
161
|
type: :development
|
176
162
|
prerelease: false
|
177
163
|
version_requirements: !ruby/object:Gem::Requirement
|
178
164
|
requirements:
|
179
|
-
- -
|
165
|
+
- - ">="
|
180
166
|
- !ruby/object:Gem::Version
|
181
167
|
version: '0'
|
182
168
|
- !ruby/object:Gem::Dependency
|
183
169
|
name: pry-nav
|
184
170
|
requirement: !ruby/object:Gem::Requirement
|
185
171
|
requirements:
|
186
|
-
- -
|
172
|
+
- - ">="
|
187
173
|
- !ruby/object:Gem::Version
|
188
174
|
version: '0'
|
189
175
|
type: :development
|
190
176
|
prerelease: false
|
191
177
|
version_requirements: !ruby/object:Gem::Requirement
|
192
178
|
requirements:
|
193
|
-
- -
|
179
|
+
- - ">="
|
194
180
|
- !ruby/object:Gem::Version
|
195
181
|
version: '0'
|
196
182
|
- !ruby/object:Gem::Dependency
|
197
183
|
name: rake-compiler
|
198
184
|
requirement: !ruby/object:Gem::Requirement
|
199
185
|
requirements:
|
200
|
-
- -
|
186
|
+
- - ">="
|
201
187
|
- !ruby/object:Gem::Version
|
202
188
|
version: '0'
|
203
189
|
type: :development
|
204
190
|
prerelease: false
|
205
191
|
version_requirements: !ruby/object:Gem::Requirement
|
206
192
|
requirements:
|
207
|
-
- -
|
193
|
+
- - ">="
|
208
194
|
- !ruby/object:Gem::Version
|
209
195
|
version: '0'
|
210
196
|
- !ruby/object:Gem::Dependency
|
211
197
|
name: geminabox
|
212
198
|
requirement: !ruby/object:Gem::Requirement
|
213
199
|
requirements:
|
214
|
-
- -
|
200
|
+
- - ">="
|
215
201
|
- !ruby/object:Gem::Version
|
216
202
|
version: '0'
|
217
203
|
type: :development
|
218
204
|
prerelease: false
|
219
205
|
version_requirements: !ruby/object:Gem::Requirement
|
220
206
|
requirements:
|
221
|
-
- -
|
207
|
+
- - ">="
|
222
208
|
- !ruby/object:Gem::Version
|
223
209
|
version: '0'
|
224
210
|
description: ALPHA VERSION, not in a useable form.
|
@@ -228,12 +214,13 @@ executables: []
|
|
228
214
|
extensions: []
|
229
215
|
extra_rdoc_files: []
|
230
216
|
files:
|
231
|
-
- .gitignore
|
232
|
-
- .
|
217
|
+
- ".gitignore"
|
218
|
+
- ".travis.yml"
|
233
219
|
- Gemfile
|
234
220
|
- LICENSE.txt
|
235
221
|
- README.md
|
236
222
|
- Rakefile
|
223
|
+
- circle.yml
|
237
224
|
- ext/dom/Makefile
|
238
225
|
- lib/wovnrb.rb
|
239
226
|
- lib/wovnrb/headers.rb
|
@@ -247,6 +234,7 @@ files:
|
|
247
234
|
- test/lib/headers_test.rb
|
248
235
|
- test/lib/lang_test.rb
|
249
236
|
- test/lib/services/url_test.rb
|
237
|
+
- test/lib/store_test.rb
|
250
238
|
- test/lib/wovnrb_test.rb
|
251
239
|
- test/services/url_test.rb
|
252
240
|
- test/test_helper.rb
|
@@ -262,17 +250,17 @@ require_paths:
|
|
262
250
|
- lib
|
263
251
|
required_ruby_version: !ruby/object:Gem::Requirement
|
264
252
|
requirements:
|
265
|
-
- -
|
253
|
+
- - ">="
|
266
254
|
- !ruby/object:Gem::Version
|
267
255
|
version: '0'
|
268
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
257
|
requirements:
|
270
|
-
- -
|
258
|
+
- - ">="
|
271
259
|
- !ruby/object:Gem::Version
|
272
260
|
version: '0'
|
273
261
|
requirements: []
|
274
262
|
rubyforge_project:
|
275
|
-
rubygems_version: 2.0
|
263
|
+
rubygems_version: 2.2.0
|
276
264
|
signing_key:
|
277
265
|
specification_version: 4
|
278
266
|
summary: Gem for WOVN.io
|
@@ -282,6 +270,7 @@ test_files:
|
|
282
270
|
- test/lib/headers_test.rb
|
283
271
|
- test/lib/lang_test.rb
|
284
272
|
- test/lib/services/url_test.rb
|
273
|
+
- test/lib/store_test.rb
|
285
274
|
- test/lib/wovnrb_test.rb
|
286
275
|
- test/services/url_test.rb
|
287
276
|
- test/test_helper.rb
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.0.0-p451
|