singleton-client 0.7.2 → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b866f4160d99e04ac3140bf8da0e7f15abf5db1fac6360d2e5d8f8a6c392eb8
4
- data.tar.gz: 7e4977b0480ef04e774a2891fafee6d6b76fc1abbafd436e718f9846c138d545
3
+ metadata.gz: 662845b2e8dcbe69030049114857506ba0e2d5fd0ab98fdf886ddfd07ed1c7a8
4
+ data.tar.gz: bafa7b6a9f9d68e735ad1c830f37ea7f770381cafd7ff4ecda142d1673cec9c3
5
5
  SHA512:
6
- metadata.gz: e34e259dbf04c59adb5ab96e3fde9d73a3918f9a7d284e5a33313185c1e6afbd25e43c850e3eedabbdb8602c6b32bbdb3cb76efee3536d1d7d615ddd43e94316
7
- data.tar.gz: 73f14c209b98942d919c6037b31dd5f14ac44350609e8ab42d7afdc75098a42072794b40266145c44080c936c1a90aa86b7cea4d6e2b85053d30bf2db7d22324
6
+ metadata.gz: 3249cfcdce192e2e04670aefb03fd090c9b436171edeb80bec82d1d62816e8406d7aaaa92e3b85aec0d9e625babbab136d61e3e0d4ecf12d582c0fd99ad5a5c5
7
+ data.tar.gz: c694298fc391a1395ea62b4b3fe7595c5deae8fd1909d01af1b6097a03848583a81e5b0d52ef16339645bc74035f180feae9110cad56f0b67d082a95c72bb3e1
@@ -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
- items = SgtnClient::CacheUtil.get_cache(cache_key)
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 "Getting sources from cache with key: " + cache_key
18
+ SgtnClient.logger.debug "[Source][getSource]getting sources from cache with key: " + cache_key
17
19
  end
18
- s = items[locale][key]
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
- items = SgtnClient::CacheUtil.get_cache(cache_key)
31
- if items.nil?
33
+ expired, items = SgtnClient::CacheUtil.get_cache(cache_key)
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 "Getting sources from cache with key: " + cache_key
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
@@ -1,3 +1,6 @@
1
+ # Copyright 2022 VMware, Inc.
2
+ # SPDX-License-Identifier: EPL-2.0
3
+
1
4
  module SgtnClient
2
5
  class T < Translation
3
6
 
@@ -19,4 +22,4 @@ module SgtnClient
19
22
  return getStrings(component, locale)
20
23
  end
21
24
  end
22
- end
25
+ end
@@ -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,17 +15,26 @@ 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)
22
+ if str.nil?
23
+ SgtnClient.logger.debug "[Translation][getString] Missing source string with key: #{key}, component: #{component}, locale: #{locale}"
24
+ end
18
25
  end
19
26
  str
20
27
  end
21
28
 
22
29
  def self.getString_p(component, key, plural_args, locale)
30
+ SgtnClient.logger.debug "[Translation][getString_p]component=#{component}, key=#{key}, locale=#{locale}"
23
31
  str = getTranslation(component, key, locale)
24
32
  if str.nil?
25
33
  str = SgtnClient::Source.getSource(component, key, SgtnClient::Config.configurations.default)
34
+ if str.nil?
35
+ SgtnClient.logger.debug "[Translation][getString_p] Missing source string with key: #{key}, component: #{component}, locale: #{locale}"
36
+ return nil
37
+ end
26
38
  str.to_plural_s(:en, plural_args)
27
39
  else
28
40
  str.to_plural_s(locale, plural_args)
@@ -30,7 +42,11 @@ module SgtnClient
30
42
  end
31
43
 
32
44
  def self.getString_f(component, key, args, locale, *optionals)
45
+ SgtnClient.logger.debug "[Translation][getString_f]component=#{component}, key=#{key}, locale=#{locale}"
33
46
  s = getString(component, key, locale, *optionals)
47
+ if s.nil?
48
+ return nil
49
+ end
34
50
  if args.is_a?(Hash)
35
51
  args.each do |source, arg|
36
52
  s.gsub! "{#{source}}", arg
@@ -42,24 +58,21 @@ module SgtnClient
42
58
  end
43
59
 
44
60
  def self.getStrings(component, locale)
45
- flocale = SgtnClient::LocaleUtil.fallback(locale)
46
- cache_key = SgtnClient::CacheUtil.get_cachekey(component, flocale)
47
- items = SgtnClient::CacheUtil.get_cache(cache_key)
48
- if items.nil?
49
- items = getTranslations(component, flocale)
50
- SgtnClient::CacheUtil.write_cache(cache_key, items)
51
- else
52
- SgtnClient.logger.debug "Getting translations from cache with key: " + cache_key
53
- end
54
-
61
+ SgtnClient.logger.debug "[Translation][getStrings]component=#{component}, locale=#{locale}"
62
+ locale = SgtnClient::LocaleUtil.get_best_locale(locale)
63
+ items = get_cs(component, locale)
55
64
  default = SgtnClient::Config.configurations.default
56
65
  if items.nil? || items["messages"] == nil
57
66
  items = {}
58
67
  s = SgtnClient::Source.getSources(component, default)
59
- default_component, value = s.first
60
- items["component"] = component
61
- items["messages"] = value
62
- items["locale"] = 'source'
68
+ if s.nil?
69
+ SgtnClient.logger.error "[Translation][getStrings] Missing component: #{component}, locale: #{locale}"
70
+ else
71
+ default_component, value = s.first
72
+ items["component"] = component
73
+ items["messages"] = value
74
+ items["locale"] = 'source'
75
+ end
63
76
  end
64
77
  return items
65
78
  end
@@ -68,11 +81,28 @@ module SgtnClient
68
81
  private
69
82
 
70
83
  def self.getTranslation(component, key, locale)
71
- flocale = SgtnClient::LocaleUtil.fallback(locale)
72
- cache_key = SgtnClient::CacheUtil.get_cachekey(component, flocale)
73
- items = SgtnClient::CacheUtil.get_cache(cache_key)
74
- if items.nil?
75
- items = getTranslations(component, flocale)
84
+ locale = SgtnClient::LocaleUtil.get_best_locale(locale)
85
+ items = get_cs(component, locale)
86
+ if items.nil? || items["messages"] == nil
87
+ nil
88
+ else
89
+ items["messages"][key]
90
+ end
91
+ end
92
+
93
+ def self.get_cs(component, locale)
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}"
103
+ expired, items = SgtnClient::CacheUtil.get_cache(cache_key)
104
+ if items.nil? || expired
105
+ items = load(component, locale)
76
106
  if items.nil?
77
107
  items = SgtnClient::Source.getSources(component, SgtnClient::Config.configurations.default)
78
108
  SgtnClient::Core::Cache.put(cache_key, items, 60)
@@ -80,43 +110,38 @@ module SgtnClient
80
110
  SgtnClient::CacheUtil.write_cache(cache_key, items)
81
111
  end
82
112
  else
83
- SgtnClient.logger.debug "Getting translations from cache with key: " + cache_key
84
- end
85
- if items.nil? || items["messages"] == nil
86
- nil
87
- else
88
- items["messages"][key]
113
+ SgtnClient.logger.debug "[Translation]get translations from cache with key: " + cache_key
89
114
  end
90
- end
91
-
92
- def self.getTranslations(component, locale)
115
+
116
+ return items
117
+ end
118
+
119
+ def self.load(component, locale)
93
120
  env = SgtnClient::Config.default_environment
94
121
  mode = SgtnClient::Config.configurations[env]["bundle_mode"]
122
+ SgtnClient.logger.debug "[Translation][load]mode=#{mode}"
95
123
  if mode == 'offline'
96
- return get_offbundle(component, locale)
124
+ return load_o(component, locale)
97
125
  else
98
- return get_server(component, locale)
126
+ return load_s(component, locale)
99
127
  end
100
128
  end
101
129
 
102
- def self.get_offbundle(component, locale)
130
+ def self.load_o(component, locale)
103
131
  env = SgtnClient::Config.default_environment
104
132
  product_name = SgtnClient::Config.configurations[env]["product_name"]
105
133
  version = SgtnClient::Config.configurations[env]["version"].to_s
106
134
  translation_bundle = SgtnClient::Config.configurations[env]["translation_bundle"]
107
135
  bundlepath = translation_bundle + "/" + product_name + "/" + version + "/" + component + "/messages_" + locale + ".json"
108
- SgtnClient.logger.debug "Getting translations from offline bundle: " + bundlepath
109
136
  SgtnClient::FileUtil.read_json(bundlepath)
110
137
  end
111
138
 
112
- def self.get_server(component, locale)
139
+ def self.load_s(component, locale)
113
140
  env = SgtnClient::Config.default_environment
114
141
  product_name = SgtnClient::Config.configurations[env]["product_name"]
115
142
  vip_server = SgtnClient::Config.configurations[env]["vip_server"]
116
- SgtnClient.logger.debug "Getting translations from server: " + vip_server
117
143
  version = SgtnClient::Config.configurations[env]["version"].to_s
118
144
  url = vip_server + "/i18n/api/v2/translation/products/" + product_name + "/versions/" + version + "/locales/" + locale + "/components/" + component+ "?checkTranslationStatus=false&machineTranslation=false&pseudo=false"
119
- SgtnClient.logger.debug url
120
145
  begin
121
146
  obj = SgtnClient::Core::Request.get(url)
122
147
  rescue => exception
@@ -130,4 +155,4 @@ module SgtnClient
130
155
 
131
156
  end
132
157
 
133
- 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
@@ -5,88 +8,96 @@ module SgtnClient::Core
5
8
  Entry = Struct.new(:expiry, :value)
6
9
 
7
10
  def self.initialize(disabled=false, opts={})
8
- $opts = opts
11
+ @@opts = opts
9
12
  @mutex = Mutex.new
10
- SgtnClient.logger.debug "Initialize cache......"
11
13
  if disabled == false
12
- $data = Hash.new
13
- SgtnClient.logger.debug "Cache is enabled!"
14
+ @@data = Hash.new
15
+ SgtnClient.logger.debug "[Cache][initialize]cache is enabled!"
14
16
  else
15
- SgtnClient.logger.debug "Cache is disabled!"
17
+ @@data = nil
18
+ SgtnClient.logger.debug "[Cache][initialize]cache is disabled!"
16
19
  end
17
20
  end
18
21
 
19
22
  def self.keys
20
- if $data == nil
23
+ if @@data == nil
21
24
  return nil
22
25
  end
23
- SgtnClient.logger.debug "Get cache keys"
24
- $data.keys
26
+ SgtnClient.logger.debug "[Cache][keys]get cache keys"
27
+ @@data.keys
25
28
  end
26
29
 
27
30
  def self.get(key)
28
- if $data == nil
29
- return nil
31
+ if @@data == nil
32
+ return nil, nil
30
33
  end
31
- SgtnClient.logger.debug "Get cache for key: " + key
32
- invalidate
33
- $data[key][:value] if has(key)
34
+ SgtnClient.logger.debug "[Cache][get]get cache for key: " + key
35
+ invalidate(key)
34
36
  end
35
37
 
36
38
  def self.has(key)
37
- if $data == nil
39
+ if @@data == nil
38
40
  return nil
39
41
  end
40
- SgtnClient.logger.debug "Has cache for key: " + key
41
- $data.has_key? key
42
+ SgtnClient.logger.debug "[Cache][has]check if the cache has key: #{(@@data.has_key? key)}"
43
+ @@data.has_key? key
42
44
  end
43
45
 
44
46
  def self.put(key, value, ttl=nil)
45
47
  @mutex.synchronize do
46
- if $data == nil
48
+ if @@data == nil || value == nil
47
49
  return nil
48
50
  end
49
- ttl ||= @opts[:ttl]
51
+ ttl ||= @@opts[:ttl]
50
52
  # hours from new
51
- SgtnClient.logger.debug "Put cache for key '" + key + "' with expired time at'" + (Time.now + ttl*60).to_s
52
- $data[key] = Entry.new(Time.now + ttl*60, value)
53
+ SgtnClient.logger.debug "[Cache][put]put cache for key '" + key + "' with expired time at'" + (Time.now + ttl*60).to_s
54
+ @@data[key] = Entry.new(Time.now + ttl*60, value)
53
55
  end
54
56
  end
55
57
 
56
58
  def self.delete(key)
57
59
  @mutex.synchronize do
58
- if $data == nil
60
+ if @@data == nil
59
61
  return nil
60
62
  end
61
- SgtnClient.logger.debug "Delete cache for key: " + key
62
- $data.delete key
63
+ SgtnClient.logger.debug "[Cache][delete]delete cache for key: " + key
64
+ @@data.delete key
63
65
  end
64
66
  end
65
67
 
66
68
  def self.clear
67
69
  @mutex.synchronize do
68
- if $data == nil
70
+ if @@data == nil
69
71
  return nil
70
72
  end
71
- SgtnClient.logger.debug "Clear cache!"
72
- $data = Hash.new
73
+ SgtnClient.logger.debug "[Cache][clear]clear cache!"
74
+ @@data = Hash.new
73
75
  end
74
76
  end
75
77
 
76
- def self.invalidate
78
+ def self.invalidate(key)
77
79
  @mutex.synchronize do
78
- if $data == nil
79
- return nil
80
+ if @@data == nil
81
+ return nil, nil
80
82
  end
81
- SgtnClient.logger.debug "Invalidating expired cache......"
83
+ SgtnClient.logger.debug "[Cache][invalidate]invalidate expired cache......"
82
84
  now = Time.now
83
- $data.each {
84
- |k, v|
85
- SgtnClient.logger.debug "Checking cache: key=#{k}, expiredtime=#{v[:expiry]}, now=#{now}, expired=#{(v[:expiry] < now)}"
86
- }
87
- $data.delete_if {|k, v| v[:expiry] < now}
85
+ if has(key)
86
+ v = @@data[key]
87
+ expired = false
88
+ SgtnClient.logger.debug "[Cache][invalidate]check cache: key=#{key}, expiredtime=#{v[:expiry]}, now=#{now}, expired=#{(v[:expiry] < now)}"
89
+ if v[:expiry] < now
90
+ SgtnClient.logger.debug "[Cache][invalidate]before deleting the cache: data=#{@@data}"
91
+ @@data.delete(key)
92
+ SgtnClient.logger.debug "[Cache][invalidate]after deleting the cache: data=#{@@data}"
93
+ expired = true
94
+ end
95
+ return expired, v[:value]
96
+ else
97
+ return nil, nil
98
+ end
88
99
  end
89
100
  end
90
101
  end
91
102
 
92
- end
103
+ 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
 
@@ -40,7 +43,7 @@ module SgtnClient
40
43
  :rest_endpoint, :rest_token_endpoint, :client_id, :client_secret,
41
44
  :openid_endpoint, :openid_redirect_uri, :openid_client_id, :openid_client_secret,
42
45
  :verbose_logging, :product_name, :version, :vip_server, :bundle_mode,
43
- :translation_bundle, :source_bundle, :cache_expiry_period, :disable_cache
46
+ :translation_bundle, :source_bundle, :cache_expiry_period, :disable_cache, :default_language
44
47
 
45
48
 
46
49
  # Create Config object
@@ -163,4 +166,4 @@ module SgtnClient
163
166
  end
164
167
  end
165
168
 
166
- end
169
+ end
@@ -1,3 +1,6 @@
1
+ # Copyright 2022 VMware, Inc.
2
+ # SPDX-License-Identifier: EPL-2.0
3
+
1
4
  require 'multi_json'
2
5
  require 'pp'
3
6
 
@@ -1,3 +1,6 @@
1
+ # Copyright 2022 VMware, Inc.
2
+ # SPDX-License-Identifier: EPL-2.0
3
+
1
4
  require 'logger'
2
5
 
3
6
  module SgtnClient
@@ -47,4 +50,3 @@ module SgtnClient
47
50
  end
48
51
 
49
52
  end
50
-
@@ -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
- #res = RestClient.get(url)
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,3 +1,6 @@
1
+ # Copyright 2022 VMware, Inc.
2
+ # SPDX-License-Identifier: EPL-2.0
3
+
1
4
  require 'json'
2
5
 
3
6
  module SgtnClient
@@ -35,4 +38,4 @@ module SgtnClient
35
38
  end
36
39
  end
37
40
  end
38
- end
41
+ 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.info "Current mode is: " + mode
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
 
@@ -10,21 +13,27 @@ module SgtnClient
10
13
  class CacheUtil
11
14
 
12
15
  def self.get_cache(cache_key)
13
- items = SgtnClient::Core::Cache.get(cache_key)
14
- return items
16
+ expired, items = SgtnClient::Core::Cache.get(cache_key)
17
+ SgtnClient.logger.debug "[CacheUtil]get cache with key #{cache_key}, expired #{expired}"
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)
27
+ if items.nil?
28
+ return nil
29
+ end
22
30
  env = SgtnClient::Config.default_environment
23
31
  cache_expiry_period = SgtnClient::Config.configurations[env]["cache_expiry_period"]
24
32
  # expired after 24 hours
25
33
  if cache_expiry_period == nil
26
34
  cache_expiry_period = 24*60
27
35
  end
36
+ SgtnClient.logger.debug "[CacheUtil]write cache with key #{cache_key}, cache_expiry_period #{cache_expiry_period}, itmes #{items}"
28
37
  SgtnClient::Core::Cache.put(cache_key, items, cache_expiry_period)
29
38
  end
30
39
 
@@ -32,8 +41,8 @@ module SgtnClient
32
41
  env = SgtnClient::Config.default_environment
33
42
  product_name = SgtnClient::Config.configurations[env]["product_name"]
34
43
  version = SgtnClient::Config.configurations[env]["version"].to_s
35
- return product_name + "_" + version + "_" + component + "_" + locale
44
+ product_name + "_" + version + "_" + component + "_" + locale
36
45
  end
37
46
  end
38
47
 
39
- 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
@@ -1,3 +1,6 @@
1
+ # Copyright 2022 VMware, Inc.
2
+ # SPDX-License-Identifier: EPL-2.0
3
+
1
4
  require "sgtn-client/sgtn-client"
2
5
  require 'sgtn-client/cldr/core_ext'
3
6
  require 'twitter_cldr'
data/lib/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # Copyright 2022 VMware, Inc.
2
+ # SPDX-License-Identifier: EPL-2.0
1
3
 
2
4
  VERSION_INFO = [0, 2, 1].freeze
3
5
  VERSION = VERSION_INFO.map(&:to_s).join('.').freeze
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: singleton-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.5
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-01-18 00:00:00.000000000 Z
11
+ date: 2022-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client