wovnrb 0.2.17 → 0.2.18
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 +5 -5
- data/lib/wovnrb/api_data.rb +2 -2
- data/lib/wovnrb/html_replacers/script_replacer.rb +1 -1
- data/lib/wovnrb/railtie.rb +1 -1
- data/lib/wovnrb/store.rb +8 -3
- data/lib/wovnrb/version.rb +1 -1
- data/test/lib/api_data_test.rb +3 -3
- data/test/lib/html_replacers/script_replacer_test.rb +34 -22
- data/test/lib/store_test.rb +22 -2
- data/test/lib/wovnrb_test.rb +2 -2
- data/test/test_helper.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7bdcfd40914010805b291fbc68132434f9b95d20
|
|
4
|
+
data.tar.gz: 77a34e93cf0962516eab31bbe004ba2c4e4c8fd7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e91cb4c12e417853115fe9e6e4f175dcf6139218d388f96e1bedf6320749220f6ab16d18c323a79b5b305532bf095ef5896871861953f4012cab247883cdab33
|
|
7
|
+
data.tar.gz: 947e717e78b16d35597f68e91351444ac5d7cf62fa0bbf839fe02350e1699dc6335c9df4762639811f12386ff7612e13c6bb9b4489be82efa11b4d9925a4cdca
|
data/README.md
CHANGED
|
@@ -38,7 +38,7 @@ Insert the following into either config/application.rb or config/environments/.
|
|
|
38
38
|
...
|
|
39
39
|
|
|
40
40
|
config.wovnrb = {
|
|
41
|
-
:
|
|
41
|
+
:project_token => '2Wle3'
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
...
|
|
@@ -54,7 +54,7 @@ Insert the following into either the Application File or config.ru.
|
|
|
54
54
|
require 'wovnrb'
|
|
55
55
|
|
|
56
56
|
use Wovnrb::Interceptor, {
|
|
57
|
-
:
|
|
57
|
+
:project_token => '2Wle3'
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
...
|
|
@@ -68,14 +68,14 @@ WOVN.io Ruby Library's valid parameters are as follows.
|
|
|
68
68
|
|
|
69
69
|
Parameter Name | Required | Default Setting
|
|
70
70
|
-------------- | -------- | ----------------
|
|
71
|
-
|
|
71
|
+
project_token | yes | ''
|
|
72
72
|
url_pattern | yes | 'path'
|
|
73
73
|
query | | []
|
|
74
74
|
default_lang | yes | 'en'
|
|
75
75
|
|
|
76
|
-
### 2.1.
|
|
76
|
+
### 2.1. project_token
|
|
77
77
|
|
|
78
|
-
Set your WOVN.io Account's
|
|
78
|
+
Set your WOVN.io Account's Project token. This parameter is required.
|
|
79
79
|
|
|
80
80
|
### 2.2. url_pattern
|
|
81
81
|
|
data/lib/wovnrb/api_data.rb
CHANGED
|
@@ -35,7 +35,7 @@ module Wovnrb
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def build_api_uri
|
|
38
|
-
t = CGI::escape(@store.settings['
|
|
38
|
+
t = CGI::escape(@store.settings['project_token'])
|
|
39
39
|
u = CGI::escape(@access_url)
|
|
40
40
|
URI.parse("#{@store.settings['api_url']}?token=#{t}&url=#{u}")
|
|
41
41
|
end
|
|
@@ -56,4 +56,4 @@ module Wovnrb
|
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
|
-
end
|
|
59
|
+
end
|
|
@@ -26,7 +26,7 @@ module Wovnrb
|
|
|
26
26
|
insert_node['src'] = "//j.#{@store.wovn_host}/1"
|
|
27
27
|
insert_node['async'] = true
|
|
28
28
|
version = defined?(VERSION) ? VERSION : ''
|
|
29
|
-
insert_node['data-wovnio'] = "key=#{@store.settings['
|
|
29
|
+
insert_node['data-wovnio'] = "key=#{@store.settings['project_token']}&backend=true¤tLang=#{lang.lang_code}&defaultLang=#{@store.settings['default_lang']}&urlPattern=#{@store.settings['url_pattern']}&langCodeAliases=#{JSON.dump(@store.settings['custom_lang_aliases'])}&version=#{version}"
|
|
30
30
|
# do this so that there will be a closing tag (better compatibility with browsers)
|
|
31
31
|
insert_node.content = ' '
|
|
32
32
|
if parent_node.children.size > 0
|
data/lib/wovnrb/railtie.rb
CHANGED
data/lib/wovnrb/store.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Wovnrb
|
|
|
13
13
|
|
|
14
14
|
def self.default_settings
|
|
15
15
|
{
|
|
16
|
-
'
|
|
16
|
+
'project_token' => '',
|
|
17
17
|
'log_path' => 'log/wovn_error.log',
|
|
18
18
|
'ignore_paths' => [],
|
|
19
19
|
'ignore_globs' => [],
|
|
@@ -55,9 +55,9 @@ module Wovnrb
|
|
|
55
55
|
def valid_settings?
|
|
56
56
|
valid = true
|
|
57
57
|
errors = [];
|
|
58
|
-
if !settings.has_key?('
|
|
58
|
+
if !settings.has_key?('project_token') || settings['project_token'].length < 5 || settings['project_token'].length > 6
|
|
59
59
|
valid = false
|
|
60
|
-
errors.push("
|
|
60
|
+
errors.push("Project token #{settings['project_token']} is not valid.")
|
|
61
61
|
end
|
|
62
62
|
if settings.has_key?('ignore_paths') && !settings['ignore_paths'].kind_of?(Array)
|
|
63
63
|
valid = false
|
|
@@ -128,6 +128,11 @@ module Wovnrb
|
|
|
128
128
|
@settings['supported_langs'] = [@settings['default_lang']]
|
|
129
129
|
end
|
|
130
130
|
|
|
131
|
+
if @settings.has_key?('user_token') && @settings['project_token'].empty?
|
|
132
|
+
@settings['project_token'] = @settings['user_token']
|
|
133
|
+
end
|
|
134
|
+
@settings.delete('user_token')
|
|
135
|
+
|
|
131
136
|
if @settings['url_pattern'] == 'path'
|
|
132
137
|
@settings['url_pattern_reg'] = "/(?<lang>[^/.?]+)"
|
|
133
138
|
elsif @settings['url_pattern'] == 'query'
|
data/lib/wovnrb/version.rb
CHANGED
data/test/lib/api_data_test.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Wovnrb
|
|
|
25
25
|
stub_request(:get, "https://api.wovn.io/v0/values?token=#{token}&url=#{url}").
|
|
26
26
|
to_return(:body => '{"test_body": "a"}')
|
|
27
27
|
store = Wovnrb::Store.instance
|
|
28
|
-
store.settings
|
|
28
|
+
store.settings('user_token' => token)
|
|
29
29
|
api_data = Wovnrb::ApiData.new(url, store)
|
|
30
30
|
|
|
31
31
|
assert_equal({'test_body' => 'a'}, api_data.get_data)
|
|
@@ -37,7 +37,7 @@ module Wovnrb
|
|
|
37
37
|
stub = stub_request(:get, "https://api.wovn.io/v0/values?token=#{token}&url=#{url}").
|
|
38
38
|
to_return(:body => '{"test_body": "a"}')
|
|
39
39
|
store = Wovnrb::Store.instance
|
|
40
|
-
store.settings
|
|
40
|
+
store.settings('user_token' => token)
|
|
41
41
|
api_data = Wovnrb::ApiData.new(url, store)
|
|
42
42
|
|
|
43
43
|
assert_equal({'test_body' => 'a'}, api_data.get_data)
|
|
@@ -51,7 +51,7 @@ module Wovnrb
|
|
|
51
51
|
stub_request(:get, "https://api.wovn.io/v0/values?token=#{token}&url=#{url}").
|
|
52
52
|
to_return(:status => [500, "Internal Server Error"])
|
|
53
53
|
store = Wovnrb::Store.instance
|
|
54
|
-
store.settings
|
|
54
|
+
store.settings('user_token' => token)
|
|
55
55
|
api_data = Wovnrb::ApiData.new(url, store)
|
|
56
56
|
log_mock = Wovnrb::LogMock.mock_log
|
|
57
57
|
|
|
@@ -5,9 +5,11 @@ module Wovnrb
|
|
|
5
5
|
class ScriptReplacerTest < WovnMiniTest
|
|
6
6
|
def test_replace
|
|
7
7
|
store = Store.instance
|
|
8
|
-
store.settings
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
store.settings({
|
|
9
|
+
'user_token' => 'test_token',
|
|
10
|
+
'default_lang' => 'en',
|
|
11
|
+
'url_pattern' => 'domain'
|
|
12
|
+
})
|
|
11
13
|
|
|
12
14
|
replacer = ScriptReplacer.new(store)
|
|
13
15
|
dom = to_head_dom('<script src="test/test.js"></script>')
|
|
@@ -25,10 +27,12 @@ module Wovnrb
|
|
|
25
27
|
|
|
26
28
|
def test_replace_with_wovn_dev_mode_on
|
|
27
29
|
store = Store.instance
|
|
28
|
-
store.settings
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
store.settings({
|
|
31
|
+
'user_token' => 'test_token',
|
|
32
|
+
'default_lang' => 'en',
|
|
33
|
+
'url_pattern' => 'domain',
|
|
34
|
+
'wovn_dev_mode' => true
|
|
35
|
+
})
|
|
32
36
|
|
|
33
37
|
replacer = ScriptReplacer.new(store)
|
|
34
38
|
dom = to_head_dom('<script src="test/test.js"></script>')
|
|
@@ -46,9 +50,11 @@ module Wovnrb
|
|
|
46
50
|
|
|
47
51
|
def test_with_embed_wovn
|
|
48
52
|
store = Store.instance
|
|
49
|
-
store.settings
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
store.settings({
|
|
54
|
+
'user_token' => 'test_token',
|
|
55
|
+
'default_lang' => 'en',
|
|
56
|
+
'url_pattern' => 'domain'
|
|
57
|
+
})
|
|
52
58
|
|
|
53
59
|
replacer = ScriptReplacer.new(store)
|
|
54
60
|
dom = to_head_dom('<script src="//j.wovn.io/aaaa" data-wovnio="key=test_token" async></script>')
|
|
@@ -62,9 +68,11 @@ module Wovnrb
|
|
|
62
68
|
|
|
63
69
|
def test_with_multiple_embed_wovn
|
|
64
70
|
store = Store.instance
|
|
65
|
-
store.settings
|
|
66
|
-
|
|
67
|
-
|
|
71
|
+
store.settings({
|
|
72
|
+
'user_token' => 'test_token',
|
|
73
|
+
'default_lang' => 'en',
|
|
74
|
+
'url_pattern' => 'domain'
|
|
75
|
+
})
|
|
68
76
|
|
|
69
77
|
replacer = ScriptReplacer.new(store)
|
|
70
78
|
dom = to_head_dom('<script src="//j.wovn.io/aaaa" data-wovnio="key=test_token" async></script><script src="//j.wovn.io/bbb" data-wovnio="key=test_token" async></script>')
|
|
@@ -78,9 +86,11 @@ module Wovnrb
|
|
|
78
86
|
|
|
79
87
|
def test_with_embed_wovn_at_body
|
|
80
88
|
store = Store.instance
|
|
81
|
-
store.settings
|
|
82
|
-
|
|
83
|
-
|
|
89
|
+
store.settings({
|
|
90
|
+
'user_token' => 'test_token',
|
|
91
|
+
'default_lang' => 'en',
|
|
92
|
+
'url_pattern' => 'domain'
|
|
93
|
+
})
|
|
84
94
|
|
|
85
95
|
replacer = ScriptReplacer.new(store)
|
|
86
96
|
dom = Wovnrb.get_dom('<script src="//j.wovn.io/aaaa" data-wovnio="key=test_token" async></script>')
|
|
@@ -94,10 +104,12 @@ module Wovnrb
|
|
|
94
104
|
|
|
95
105
|
def test_contains_lang_code_aliases
|
|
96
106
|
store = Store.instance
|
|
97
|
-
store.settings
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
107
|
+
store.settings({
|
|
108
|
+
'user_token' => 'test_token',
|
|
109
|
+
'default_lang' => 'en',
|
|
110
|
+
'url_pattern' => 'domain',
|
|
111
|
+
'custom_lang_aliases' => {'ja' => 'staging-ja'}
|
|
112
|
+
})
|
|
101
113
|
|
|
102
114
|
replacer = ScriptReplacer.new(store)
|
|
103
115
|
dom = to_head_dom('')
|
|
@@ -108,11 +120,11 @@ module Wovnrb
|
|
|
108
120
|
check_wovn_script(scripts[0], 'test_token', 'ja', 'en', 'domain', '{"ja":"staging-ja"}')
|
|
109
121
|
end
|
|
110
122
|
|
|
111
|
-
def check_wovn_script(node,
|
|
123
|
+
def check_wovn_script(node, project_token, current_lang, default_lang, url_pattern, custom_lang_aliases = {})
|
|
112
124
|
wovn_data = [
|
|
113
125
|
['src', '//j.wovn.io/1'],
|
|
114
126
|
['async', 'true'],
|
|
115
|
-
['data-wovnio', "key=#{
|
|
127
|
+
['data-wovnio', "key=#{project_token}&backend=true¤tLang=#{current_lang}&defaultLang=#{default_lang}&urlPattern=#{url_pattern}&langCodeAliases=#{custom_lang_aliases}&version=#{Wovnrb::VERSION}"]
|
|
116
128
|
]
|
|
117
129
|
wovn_data.each do |data|
|
|
118
130
|
assert_equal(data[1], node.get_attribute(data[0]))
|
data/test/lib/store_test.rb
CHANGED
|
@@ -14,6 +14,26 @@ module Wovnrb
|
|
|
14
14
|
assert_equal('/(?<lang>[^/.?]+)', s.settings['url_pattern_reg'])
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
def test_settings_user_token_retro_compatibility
|
|
18
|
+
s = Wovnrb::Store.instance
|
|
19
|
+
s.settings('user_token' => 'aaaaa')
|
|
20
|
+
assert_equal('aaaaa', s.settings['project_token'])
|
|
21
|
+
assert(!s.settings.has_key?('user_token'))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_settings_project_token_set
|
|
25
|
+
s = Wovnrb::Store.instance
|
|
26
|
+
s.settings('project_token' => 'bbbbbb')
|
|
27
|
+
assert_equal('bbbbbb', s.settings['project_token'])
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_settings_project_token_set_without_retro_compatibility
|
|
31
|
+
s = Wovnrb::Store.instance
|
|
32
|
+
s.settings('project_token' => 'bbbbbb', 'user_token' => 'aaaaa')
|
|
33
|
+
assert_equal('bbbbbb', s.settings['project_token'])
|
|
34
|
+
assert(!s.settings.has_key?('user_token'))
|
|
35
|
+
end
|
|
36
|
+
|
|
17
37
|
def test_settings_url_pattern_path
|
|
18
38
|
s = Wovnrb::Store.instance
|
|
19
39
|
s.settings({'url_pattern' => 'path'})
|
|
@@ -41,7 +61,7 @@ module Wovnrb
|
|
|
41
61
|
valid = store.valid_settings?
|
|
42
62
|
|
|
43
63
|
assert_equal(false, valid)
|
|
44
|
-
assert_equal(['
|
|
64
|
+
assert_equal(['Project token is not valid.'], mock.errors)
|
|
45
65
|
end
|
|
46
66
|
|
|
47
67
|
def test_settings_ignore_paths
|
|
@@ -73,7 +93,7 @@ module Wovnrb
|
|
|
73
93
|
store.settings({'ignore_paths' => 'aaaa'})
|
|
74
94
|
|
|
75
95
|
assert_equal(false, store.valid_settings?)
|
|
76
|
-
assert_equal(['
|
|
96
|
+
assert_equal(['Project token is not valid.', 'Ignore Paths aaaa should be Array.'], mock.errors)
|
|
77
97
|
end
|
|
78
98
|
|
|
79
99
|
def test_settings_ignore_glob_injection
|
data/test/lib/wovnrb_test.rb
CHANGED
|
@@ -25,7 +25,7 @@ class WovnrbTest < Minitest::Test
|
|
|
25
25
|
|
|
26
26
|
def test_api_call
|
|
27
27
|
settings = Wovnrb.get_settings
|
|
28
|
-
token = settings['
|
|
28
|
+
token = settings['project_token']
|
|
29
29
|
url = 'wovn.io/dashboard'
|
|
30
30
|
stub = stub_request(:get, "#{settings['api_url']}?token=#{token}&url=#{url}").
|
|
31
31
|
to_return(:body => '{"test_body": "a"}')
|
|
@@ -38,7 +38,7 @@ class WovnrbTest < Minitest::Test
|
|
|
38
38
|
|
|
39
39
|
def test_api_call_with_cache
|
|
40
40
|
settings = Wovnrb.get_settings
|
|
41
|
-
token = settings['
|
|
41
|
+
token = settings['project_token']
|
|
42
42
|
url = 'wovn.io/dashboard'
|
|
43
43
|
stub = stub_request(:get, "#{settings['api_url']}?token=#{token}&url=#{url}").
|
|
44
44
|
to_return(:body => '{"test_body": "a"}')
|
data/test/test_helper.rb
CHANGED
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.2.
|
|
4
|
+
version: 0.2.18
|
|
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: 2017-
|
|
12
|
+
date: 2017-05-24 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: nokogumbo
|