singleton-client-test 0.7.0.29 → 0.7.0.32
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/lib/sgtn-client/api/source.rb +12 -10
- data/lib/sgtn-client/api/t.rb +4 -1
- data/lib/sgtn-client/api/translation.rb +25 -11
- data/lib/sgtn-client/cldr/core_ext.rb +4 -1
- data/lib/sgtn-client/cldr/localized_date.rb +4 -1
- data/lib/sgtn-client/cldr/localized_datetime.rb +4 -1
- data/lib/sgtn-client/cldr/localized_str.rb +3 -1
- data/lib/sgtn-client/cldr/localized_time.rb +4 -1
- data/lib/sgtn-client/core/cache.rb +16 -14
- data/lib/sgtn-client/core/config.rb +4 -1
- data/lib/sgtn-client/core/exceptions.rb +3 -0
- data/lib/sgtn-client/core/logging.rb +3 -1
- data/lib/sgtn-client/core/request.rb +5 -2
- data/lib/sgtn-client/formatters/plurals/plural_formatter.rb +4 -1
- data/lib/sgtn-client/sgtn-client.rb +9 -2
- data/lib/sgtn-client/util/cache-util.rb +8 -8
- data/lib/sgtn-client/util/file-util.rb +6 -1
- data/lib/sgtn-client/util/locale-util.rb +16 -1
- data/lib/sgtn-client/util/validate-util.rb +4 -3
- data/lib/singleton-ruby.rb +3 -0
- data/lib/version.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c3518e9f8e872dd00acd151a9157c273f274c5398d773c42e75d07e0667413b
|
4
|
+
data.tar.gz: 0eec546d1df60f066a1f346c04da0cac374f1944980477ccb32b5055a70e62b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8eb7e6e83057a56fa3a0d618b14ef83e61458319ccbbea388028961bbeae0ea061c82c87ed34f89cfe43c2336fc390b4ffe6801c1e9e6c85e43a2c4dd366e9f
|
7
|
+
data.tar.gz: 10eb576187a7ff47e04e409ff292862397e956de6adfbe9f2a39565cd5219c22397a959a23b399c96627aeab85562992f0abc92edec3a590f0ec7a7b610c4794
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
1
3
|
|
2
4
|
module SgtnClient
|
3
5
|
|
@@ -6,18 +8,18 @@ module SgtnClient
|
|
6
8
|
class Source
|
7
9
|
|
8
10
|
def self.getSource(component, key, locale)
|
11
|
+
SgtnClient.logger.debug "[Source][getSource]component=#{component}, key=#{key}, locale=#{locale}"
|
9
12
|
cache_key = SgtnClient::CacheUtil.get_cachekey(component, locale)
|
10
13
|
expired, items = SgtnClient::CacheUtil.get_cache(cache_key)
|
11
14
|
if items.nil?
|
12
|
-
items = getBundle(component, locale)
|
13
|
-
SgtnClient.logger.debug "Putting sources items into cache with key: " + cache_key
|
15
|
+
items = getBundle(component, locale)
|
14
16
|
SgtnClient::CacheUtil.write_cache(cache_key, items)
|
15
17
|
else
|
16
|
-
SgtnClient.logger.debug "
|
18
|
+
SgtnClient.logger.debug "[Source][getSource]getting sources from cache with key: " + cache_key
|
17
19
|
end
|
18
|
-
s = items.nil
|
20
|
+
s = (items.nil? || items[locale].nil?)? nil : items[locale][key]
|
19
21
|
if items.nil? || s.nil?
|
20
|
-
SgtnClient.logger.debug "Source not found, return key: " + key
|
22
|
+
SgtnClient.logger.debug "[Source][getSource]source not found, return key: " + key
|
21
23
|
#return key
|
22
24
|
return nil
|
23
25
|
else
|
@@ -26,23 +28,23 @@ module SgtnClient
|
|
26
28
|
end
|
27
29
|
|
28
30
|
def self.getSources(component, locale)
|
31
|
+
SgtnClient.logger.debug "[Source][getSources]component=#{component}, locale=#{locale}"
|
29
32
|
cache_key = SgtnClient::CacheUtil.get_cachekey(component, locale)
|
30
33
|
expired, items = SgtnClient::CacheUtil.get_cache(cache_key)
|
31
34
|
if items.nil? || expired
|
32
35
|
items = getBundle(component, locale)
|
33
|
-
SgtnClient.logger.debug "Putting sources items into cache with key: " + cache_key
|
34
36
|
SgtnClient::CacheUtil.write_cache(cache_key, items)
|
35
37
|
else
|
36
|
-
SgtnClient.logger.debug "
|
38
|
+
SgtnClient.logger.debug "[Source][getSources]getting sources from cache with key: " + cache_key
|
37
39
|
end
|
38
40
|
return items
|
39
41
|
end
|
40
42
|
|
41
43
|
def self.loadBundles(locale)
|
44
|
+
SgtnClient.logger.debug "[Source][loadBundles]locale=#{locale}"
|
42
45
|
env = SgtnClient::Config.default_environment
|
43
46
|
SgtnClient::Config.configurations.default = locale
|
44
47
|
source_bundle = SgtnClient::Config.configurations[env]["source_bundle"]
|
45
|
-
SgtnClient.logger.debug "Loading [" + locale + "] source bundles from path: " + source_bundle
|
46
48
|
Dir.foreach(source_bundle) do |component|
|
47
49
|
next if component == '.' || component == '..'
|
48
50
|
yamlfile = File.join(source_bundle, component + "/" + locale + ".yml")
|
@@ -54,10 +56,10 @@ module SgtnClient
|
|
54
56
|
|
55
57
|
private
|
56
58
|
def self.getBundle(component, locale)
|
59
|
+
SgtnClient.logger.debug "[Source][getBundle]component=#{component}, locale=#{locale}"
|
57
60
|
env = SgtnClient::Config.default_environment
|
58
61
|
source_bundle = SgtnClient::Config.configurations[env]["source_bundle"]
|
59
62
|
bundlepath = source_bundle + "/" + component + "/" + locale + ".yml"
|
60
|
-
SgtnClient.logger.debug "Getting source from bundle: " + bundlepath
|
61
63
|
begin
|
62
64
|
bundle = SgtnClient::FileUtil.read_yml(bundlepath)
|
63
65
|
rescue => exception
|
@@ -68,4 +70,4 @@ module SgtnClient
|
|
68
70
|
|
69
71
|
end
|
70
72
|
|
71
|
-
end
|
73
|
+
end
|
data/lib/sgtn-client/api/t.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
require 'multi_json'
|
2
5
|
|
3
6
|
module SgtnClient
|
@@ -12,22 +15,24 @@ module SgtnClient
|
|
12
15
|
class Translation
|
13
16
|
|
14
17
|
def self.getString(component, key, locale)
|
18
|
+
SgtnClient.logger.debug "[Translation.getString]component: #{component}, key: #{key}, locale: #{locale}"
|
15
19
|
str = getTranslation(component, key, locale)
|
16
20
|
if str.nil?
|
17
21
|
str = SgtnClient::Source.getSource(component, key, SgtnClient::Config.configurations.default)
|
18
22
|
if str.nil?
|
19
|
-
SgtnClient.logger.
|
23
|
+
SgtnClient.logger.debug "[Translation][getString] Missing source string with key: #{key}, component: #{component}, locale: #{locale}"
|
20
24
|
end
|
21
25
|
end
|
22
26
|
str
|
23
27
|
end
|
24
28
|
|
25
29
|
def self.getString_p(component, key, plural_args, locale)
|
30
|
+
SgtnClient.logger.debug "[Translation][getString_p]component=#{component}, key=#{key}, locale=#{locale}"
|
26
31
|
str = getTranslation(component, key, locale)
|
27
32
|
if str.nil?
|
28
33
|
str = SgtnClient::Source.getSource(component, key, SgtnClient::Config.configurations.default)
|
29
34
|
if str.nil?
|
30
|
-
SgtnClient.logger.
|
35
|
+
SgtnClient.logger.debug "[Translation][getString_p] Missing source string with key: #{key}, component: #{component}, locale: #{locale}"
|
31
36
|
return nil
|
32
37
|
end
|
33
38
|
str.to_plural_s(:en, plural_args)
|
@@ -37,6 +42,7 @@ module SgtnClient
|
|
37
42
|
end
|
38
43
|
|
39
44
|
def self.getString_f(component, key, args, locale, *optionals)
|
45
|
+
SgtnClient.logger.debug "[Translation][getString_f]component=#{component}, key=#{key}, locale=#{locale}"
|
40
46
|
s = getString(component, key, locale, *optionals)
|
41
47
|
if s.nil?
|
42
48
|
return nil
|
@@ -52,13 +58,15 @@ module SgtnClient
|
|
52
58
|
end
|
53
59
|
|
54
60
|
def self.getStrings(component, locale)
|
61
|
+
SgtnClient.logger.debug "[Translation][getStrings]component=#{component}, locale=#{locale}"
|
62
|
+
locale = SgtnClient::LocaleUtil.get_best_locale(locale)
|
55
63
|
items = get_cs(component, locale)
|
56
64
|
default = SgtnClient::Config.configurations.default
|
57
65
|
if items.nil? || items["messages"] == nil
|
58
66
|
items = {}
|
59
67
|
s = SgtnClient::Source.getSources(component, default)
|
60
68
|
if s.nil?
|
61
|
-
SgtnClient.logger.error "
|
69
|
+
SgtnClient.logger.error "[Translation][getStrings] Missing component: #{component}, locale: #{locale}"
|
62
70
|
else
|
63
71
|
default_component, value = s.first
|
64
72
|
items["component"] = component
|
@@ -73,6 +81,7 @@ module SgtnClient
|
|
73
81
|
private
|
74
82
|
|
75
83
|
def self.getTranslation(component, key, locale)
|
84
|
+
locale = SgtnClient::LocaleUtil.get_best_locale(locale)
|
76
85
|
items = get_cs(component, locale)
|
77
86
|
if items.nil? || items["messages"] == nil
|
78
87
|
nil
|
@@ -82,11 +91,18 @@ module SgtnClient
|
|
82
91
|
end
|
83
92
|
|
84
93
|
def self.get_cs(component, locale)
|
85
|
-
|
86
|
-
|
94
|
+
# source locale always return source bundle
|
95
|
+
if locale == LocaleUtil.get_source_locale
|
96
|
+
sources = SgtnClient::Source.getSources(component, SgtnClient::Config.configurations.default)
|
97
|
+
messages = sources&.first&.last
|
98
|
+
return {'locale' => locale, 'component' => component, 'messages' => messages} if messages
|
99
|
+
end
|
100
|
+
|
101
|
+
cache_key = SgtnClient::CacheUtil.get_cachekey(component, locale)
|
102
|
+
SgtnClient.logger.debug "[Translation][get_cs]cache_key=#{cache_key}"
|
87
103
|
expired, items = SgtnClient::CacheUtil.get_cache(cache_key)
|
88
104
|
if items.nil? || expired
|
89
|
-
items = load(component,
|
105
|
+
items = load(component, locale)
|
90
106
|
if items.nil?
|
91
107
|
items = SgtnClient::Source.getSources(component, SgtnClient::Config.configurations.default)
|
92
108
|
SgtnClient::Core::Cache.put(cache_key, items, 60)
|
@@ -94,7 +110,7 @@ module SgtnClient
|
|
94
110
|
SgtnClient::CacheUtil.write_cache(cache_key, items)
|
95
111
|
end
|
96
112
|
else
|
97
|
-
SgtnClient.logger.debug "
|
113
|
+
SgtnClient.logger.debug "[Translation]get translations from cache with key: " + cache_key
|
98
114
|
end
|
99
115
|
|
100
116
|
return items
|
@@ -103,6 +119,7 @@ module SgtnClient
|
|
103
119
|
def self.load(component, locale)
|
104
120
|
env = SgtnClient::Config.default_environment
|
105
121
|
mode = SgtnClient::Config.configurations[env]["bundle_mode"]
|
122
|
+
SgtnClient.logger.debug "[Translation][load]mode=#{mode}"
|
106
123
|
if mode == 'offline'
|
107
124
|
return load_o(component, locale)
|
108
125
|
else
|
@@ -116,7 +133,6 @@ module SgtnClient
|
|
116
133
|
version = SgtnClient::Config.configurations[env]["version"].to_s
|
117
134
|
translation_bundle = SgtnClient::Config.configurations[env]["translation_bundle"]
|
118
135
|
bundlepath = translation_bundle + "/" + product_name + "/" + version + "/" + component + "/messages_" + locale + ".json"
|
119
|
-
SgtnClient.logger.debug "Getting translations from offline bundle: " + bundlepath
|
120
136
|
SgtnClient::FileUtil.read_json(bundlepath)
|
121
137
|
end
|
122
138
|
|
@@ -124,10 +140,8 @@ module SgtnClient
|
|
124
140
|
env = SgtnClient::Config.default_environment
|
125
141
|
product_name = SgtnClient::Config.configurations[env]["product_name"]
|
126
142
|
vip_server = SgtnClient::Config.configurations[env]["vip_server"]
|
127
|
-
SgtnClient.logger.debug "Getting translations from server: " + vip_server
|
128
143
|
version = SgtnClient::Config.configurations[env]["version"].to_s
|
129
144
|
url = vip_server + "/i18n/api/v2/translation/products/" + product_name + "/versions/" + version + "/locales/" + locale + "/components/" + component+ "?checkTranslationStatus=false&machineTranslation=false&pseudo=false"
|
130
|
-
SgtnClient.logger.debug url
|
131
145
|
begin
|
132
146
|
obj = SgtnClient::Core::Request.get(url)
|
133
147
|
rescue => exception
|
@@ -141,4 +155,4 @@ module SgtnClient
|
|
141
155
|
|
142
156
|
end
|
143
157
|
|
144
|
-
end
|
158
|
+
end
|
@@ -1,4 +1,7 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
require 'sgtn-client/cldr/localized_datetime'
|
2
5
|
require 'sgtn-client/cldr/localized_date'
|
3
6
|
require 'sgtn-client/cldr/localized_time'
|
4
|
-
require 'sgtn-client/cldr/localized_str'
|
7
|
+
require 'sgtn-client/cldr/localized_str'
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
require 'date'
|
2
5
|
require 'time'
|
3
6
|
|
@@ -24,4 +27,4 @@ Date.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
|
|
24
27
|
def l_short_s(locale = TwitterCldr.locale)
|
25
28
|
self.to_datetime().localize(locale).to_date().to_short_s
|
26
29
|
end
|
27
|
-
LOCALIZE
|
30
|
+
LOCALIZE
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
require 'date'
|
2
5
|
require 'time'
|
3
6
|
|
@@ -60,4 +63,4 @@ DateTime.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
|
|
60
63
|
tz.display_name_for(self, display_name)
|
61
64
|
end
|
62
65
|
end
|
63
|
-
LOCALIZE
|
66
|
+
LOCALIZE
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
1
3
|
|
2
4
|
String.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
|
3
5
|
def to_plural_s(locale, arg)
|
@@ -8,4 +10,4 @@ String.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
|
|
8
10
|
num_str
|
9
11
|
end
|
10
12
|
end
|
11
|
-
LOCALIZE
|
13
|
+
LOCALIZE
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
require 'date'
|
2
5
|
require 'time'
|
3
6
|
|
@@ -24,4 +27,4 @@ Time.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
|
|
24
27
|
def l_short_s(locale = TwitterCldr.locale)
|
25
28
|
self.localize(locale).to_short_s
|
26
29
|
end
|
27
|
-
LOCALIZE
|
30
|
+
LOCALIZE
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
require 'date'
|
2
5
|
|
3
6
|
module SgtnClient::Core
|
@@ -7,13 +10,12 @@ module SgtnClient::Core
|
|
7
10
|
def self.initialize(disabled=false, opts={})
|
8
11
|
@@opts = opts
|
9
12
|
@mutex = Mutex.new
|
10
|
-
SgtnClient.logger.debug "Initialize cache......"
|
11
13
|
if disabled == false
|
12
14
|
@@data = Hash.new
|
13
|
-
SgtnClient.logger.debug "Cache is enabled!"
|
15
|
+
SgtnClient.logger.debug "[Cache][initialize]cache is enabled!"
|
14
16
|
else
|
15
17
|
@@data = nil
|
16
|
-
SgtnClient.logger.debug "Cache is disabled!"
|
18
|
+
SgtnClient.logger.debug "[Cache][initialize]cache is disabled!"
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
@@ -21,7 +23,7 @@ module SgtnClient::Core
|
|
21
23
|
if @@data == nil
|
22
24
|
return nil
|
23
25
|
end
|
24
|
-
SgtnClient.logger.debug "
|
26
|
+
SgtnClient.logger.debug "[Cache][keys]get cache keys"
|
25
27
|
@@data.keys
|
26
28
|
end
|
27
29
|
|
@@ -29,7 +31,7 @@ module SgtnClient::Core
|
|
29
31
|
if @@data == nil
|
30
32
|
return nil, nil
|
31
33
|
end
|
32
|
-
SgtnClient.logger.debug "
|
34
|
+
SgtnClient.logger.debug "[Cache][get]get cache for key: " + key
|
33
35
|
invalidate(key)
|
34
36
|
end
|
35
37
|
|
@@ -37,7 +39,7 @@ module SgtnClient::Core
|
|
37
39
|
if @@data == nil
|
38
40
|
return nil
|
39
41
|
end
|
40
|
-
SgtnClient.logger.debug "
|
42
|
+
SgtnClient.logger.debug "[Cache][has]check if the cache has key: #{(@@data.has_key? key)}"
|
41
43
|
@@data.has_key? key
|
42
44
|
end
|
43
45
|
|
@@ -48,7 +50,7 @@ module SgtnClient::Core
|
|
48
50
|
end
|
49
51
|
ttl ||= @@opts[:ttl]
|
50
52
|
# hours from new
|
51
|
-
SgtnClient.logger.debug "
|
53
|
+
SgtnClient.logger.debug "[Cache][put]put cache for key '" + key + "' with expired time at'" + (Time.now + ttl*60).to_s
|
52
54
|
@@data[key] = Entry.new(Time.now + ttl*60, value)
|
53
55
|
end
|
54
56
|
end
|
@@ -58,7 +60,7 @@ module SgtnClient::Core
|
|
58
60
|
if @@data == nil
|
59
61
|
return nil
|
60
62
|
end
|
61
|
-
SgtnClient.logger.debug "
|
63
|
+
SgtnClient.logger.debug "[Cache][delete]delete cache for key: " + key
|
62
64
|
@@data.delete key
|
63
65
|
end
|
64
66
|
end
|
@@ -68,7 +70,7 @@ module SgtnClient::Core
|
|
68
70
|
if @@data == nil
|
69
71
|
return nil
|
70
72
|
end
|
71
|
-
SgtnClient.logger.debug "
|
73
|
+
SgtnClient.logger.debug "[Cache][clear]clear cache!"
|
72
74
|
@@data = Hash.new
|
73
75
|
end
|
74
76
|
end
|
@@ -78,16 +80,16 @@ module SgtnClient::Core
|
|
78
80
|
if @@data == nil
|
79
81
|
return nil, nil
|
80
82
|
end
|
81
|
-
SgtnClient.logger.debug "
|
83
|
+
SgtnClient.logger.debug "[Cache][invalidate]invalidate expired cache......"
|
82
84
|
now = Time.now
|
83
85
|
if has(key)
|
84
86
|
v = @@data[key]
|
85
87
|
expired = false
|
86
|
-
SgtnClient.logger.debug "
|
88
|
+
SgtnClient.logger.debug "[Cache][invalidate]check cache: key=#{key}, expiredtime=#{v[:expiry]}, now=#{now}, expired=#{(v[:expiry] < now)}"
|
87
89
|
if v[:expiry] < now
|
88
|
-
SgtnClient.logger.debug "
|
90
|
+
SgtnClient.logger.debug "[Cache][invalidate]before deleting the cache: data=#{@@data}"
|
89
91
|
@@data.delete(key)
|
90
|
-
SgtnClient.logger.debug "
|
92
|
+
SgtnClient.logger.debug "[Cache][invalidate]after deleting the cache: data=#{@@data}"
|
91
93
|
expired = true
|
92
94
|
end
|
93
95
|
return expired, v[:value]
|
@@ -98,4 +100,4 @@ module SgtnClient::Core
|
|
98
100
|
end
|
99
101
|
end
|
100
102
|
|
101
|
-
end
|
103
|
+
end
|
@@ -1,10 +1,13 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
require 'rest-client'
|
2
5
|
require 'multi_json'
|
3
6
|
|
4
7
|
module SgtnClient::Core
|
5
8
|
class Request
|
6
9
|
def self.get(url)
|
7
|
-
|
10
|
+
SgtnClient.logger.debug "[Request][get]url=#{url}"
|
8
11
|
res = RestClient::Resource.new(
|
9
12
|
url,
|
10
13
|
:verify_ssl => false
|
@@ -18,4 +21,4 @@ module SgtnClient::Core
|
|
18
21
|
return obj
|
19
22
|
end
|
20
23
|
end
|
21
|
-
end
|
24
|
+
end
|
@@ -1,4 +1,9 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
module SgtnClient
|
5
|
+
LOGFILE_SHIFT_AGE = 4
|
6
|
+
|
2
7
|
module Core
|
3
8
|
autoload :Cache, "sgtn-client/core/cache"
|
4
9
|
end
|
@@ -38,17 +43,18 @@ module SgtnClient
|
|
38
43
|
|
39
44
|
# create log file
|
40
45
|
file = './sgtnclient_d.log'
|
46
|
+
SgtnClient.logger.debug "[Client][load]create log file=#{file}"
|
41
47
|
if args[2] != nil
|
42
48
|
file = args[2]
|
43
49
|
end
|
44
50
|
file = File.open(file, 'a')
|
45
51
|
file.sync = true
|
46
|
-
SgtnClient.logger = Logger.new(file)
|
52
|
+
SgtnClient.logger = Logger.new(file, LOGFILE_SHIFT_AGE)
|
47
53
|
|
48
54
|
# Set log level for sandbox mode
|
49
55
|
env = SgtnClient::Config.default_environment
|
50
56
|
mode = SgtnClient::Config.configurations[env]["mode"]
|
51
|
-
SgtnClient.logger.
|
57
|
+
SgtnClient.logger.debug "[Client][load]set log level, mode=#{mode}"
|
52
58
|
if mode == 'sandbox'
|
53
59
|
SgtnClient.logger.level = Logger::DEBUG
|
54
60
|
else
|
@@ -57,6 +63,7 @@ module SgtnClient
|
|
57
63
|
|
58
64
|
# initialize cache
|
59
65
|
disable_cache = SgtnClient::Config.configurations[env]["disable_cache"]
|
66
|
+
SgtnClient.logger.debug "[Client][load]cache initialize, disable_cache=#{disable_cache}"
|
60
67
|
if disable_cache != nil
|
61
68
|
SgtnClient::Core::Cache.initialize(disable_cache)
|
62
69
|
else
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
require 'erb'
|
2
5
|
require 'yaml'
|
3
6
|
|
@@ -11,16 +14,17 @@ module SgtnClient
|
|
11
14
|
|
12
15
|
def self.get_cache(cache_key)
|
13
16
|
expired, items = SgtnClient::Core::Cache.get(cache_key)
|
17
|
+
SgtnClient.logger.debug "[CacheUtil]get cache with key #{cache_key}, expired #{expired}"
|
14
18
|
return expired, items
|
15
19
|
end
|
16
20
|
|
17
21
|
def self.clear_cache()
|
18
22
|
SgtnClient::Core::Cache.clear()
|
23
|
+
SgtnClient.logger.debug "[CacheUtil]clear cache"
|
19
24
|
end
|
20
25
|
|
21
26
|
def self.write_cache(cache_key, items)
|
22
27
|
if items.nil?
|
23
|
-
SgtnClient.logger.debug "write cache with key #{cache_key}, itmes #{items}"
|
24
28
|
return nil
|
25
29
|
end
|
26
30
|
env = SgtnClient::Config.default_environment
|
@@ -29,6 +33,7 @@ module SgtnClient
|
|
29
33
|
if cache_expiry_period == nil
|
30
34
|
cache_expiry_period = 24*60
|
31
35
|
end
|
36
|
+
SgtnClient.logger.debug "[CacheUtil]write cache with key #{cache_key}, cache_expiry_period #{cache_expiry_period}, itmes #{items}"
|
32
37
|
SgtnClient::Core::Cache.put(cache_key, items, cache_expiry_period)
|
33
38
|
end
|
34
39
|
|
@@ -36,13 +41,8 @@ module SgtnClient
|
|
36
41
|
env = SgtnClient::Config.default_environment
|
37
42
|
product_name = SgtnClient::Config.configurations[env]["product_name"]
|
38
43
|
version = SgtnClient::Config.configurations[env]["version"].to_s
|
39
|
-
|
40
|
-
if default_l == nil
|
41
|
-
default_l = 'en'
|
42
|
-
end
|
43
|
-
lc = locale == default_l ? SgtnClient::Config.configurations.default: locale
|
44
|
-
return product_name + "_" + version + "_" + component + "_" + lc
|
44
|
+
product_name + "_" + version + "_" + component + "_" + locale
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
end
|
48
|
+
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
require 'erb'
|
2
5
|
require 'yaml'
|
3
6
|
|
@@ -8,6 +11,7 @@ module SgtnClient
|
|
8
11
|
@mutex = Mutex.new
|
9
12
|
|
10
13
|
def self.read_json(bundlepath)
|
14
|
+
SgtnClient.logger.debug "[FileUtil]read json file from: " + bundlepath
|
11
15
|
@mutex.synchronize do
|
12
16
|
data_hash = nil
|
13
17
|
begin
|
@@ -21,6 +25,7 @@ module SgtnClient
|
|
21
25
|
end
|
22
26
|
|
23
27
|
def self.read_yml(file_name)
|
28
|
+
SgtnClient.logger.debug "[FileUtil]read yml file from: " + file_name
|
24
29
|
@mutex.synchronize do
|
25
30
|
erb = ERB.new(File.read(file_name))
|
26
31
|
erb.filename = file_name
|
@@ -29,4 +34,4 @@ module SgtnClient
|
|
29
34
|
end
|
30
35
|
end
|
31
36
|
|
32
|
-
end
|
37
|
+
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
3
|
+
|
1
4
|
module SgtnClient
|
2
5
|
|
3
6
|
DEFAULT_LOCALES = ['en', 'de', 'es', 'fr', 'ko', 'ja', 'zh-Hans', 'zh-Hant']
|
@@ -10,6 +13,13 @@ module SgtnClient
|
|
10
13
|
}
|
11
14
|
|
12
15
|
class LocaleUtil
|
16
|
+
def self.get_best_locale(locale)
|
17
|
+
fallback(process_locale(locale))
|
18
|
+
end
|
19
|
+
def self.process_locale(locale=nil)
|
20
|
+
locale ||= SgtnClient::Config.configurations.default
|
21
|
+
locale.to_s
|
22
|
+
end
|
13
23
|
def self.fallback(locale)
|
14
24
|
found = SgtnClient::DEFAULT_LOCALES.select {|e| e == locale}
|
15
25
|
if !found.empty?
|
@@ -27,5 +37,10 @@ module SgtnClient
|
|
27
37
|
end
|
28
38
|
return locale
|
29
39
|
end
|
40
|
+
def self.get_source_locale
|
41
|
+
env = SgtnClient::Config.default_environment
|
42
|
+
source_locale = SgtnClient::Config.configurations[env]["default_language"]
|
43
|
+
source_locale || 'en'
|
44
|
+
end
|
30
45
|
end
|
31
|
-
end
|
46
|
+
end
|
@@ -1,11 +1,13 @@
|
|
1
|
+
# Copyright 2022 VMware, Inc.
|
2
|
+
# SPDX-License-Identifier: EPL-2.0
|
1
3
|
|
2
4
|
module SgtnClient
|
3
5
|
|
4
6
|
class ValidateUtil
|
5
7
|
|
6
8
|
def self.validate_config()
|
7
|
-
SgtnClient.logger.debug "-----------Start to validate configuration's setting itmes-----------"
|
8
9
|
env = SgtnClient::Config.default_environment
|
10
|
+
SgtnClient.logger.debug "[ValidateUtil][validate_config] env = #{env}"
|
9
11
|
messages = "\n"
|
10
12
|
|
11
13
|
mode = SgtnClient::Config.configurations[env]["mode"]
|
@@ -36,9 +38,8 @@ module SgtnClient
|
|
36
38
|
if messages != "\n"
|
37
39
|
raise SgtnClient::Exceptions::MissingConfig.new(messages)
|
38
40
|
end
|
39
|
-
SgtnClient.logger.debug "-----------End to validate configuration's setting itmes-----------"
|
40
41
|
end
|
41
42
|
|
42
43
|
end
|
43
44
|
|
44
|
-
end
|
45
|
+
end
|
data/lib/singleton-ruby.rb
CHANGED
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: singleton-client-test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.0.
|
4
|
+
version: 0.7.0.32
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VMware G11n Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|