singleton-ruby 0.0.3 → 0.0.4
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 +65 -0
- data/lib/sgtn-client/api/translation.rb +17 -26
- data/lib/sgtn-client/core/cache.rb +2 -1
- data/lib/sgtn-client/core/config.rb +2 -1
- data/lib/sgtn-client/core/logging.rb +1 -1
- data/lib/sgtn-client/sgtn-client.rb +19 -1
- data/lib/sgtn-client/util/cache-util.rb +30 -0
- data/lib/version.rb +1 -1
- data/spec/config/locales/default/JAVA/en.yml +2 -0
- data/spec/config/sgtnclient.yml +4 -1
- data/spec/unit/logging_spec.rb +1 -2
- data/spec/unit/offclient_spec.rb +10 -1
- data/spec/unit/restclient_spec.rb +10 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea69ecdb18c928648d4f13c86c49c28eb06ac6debbff0a6b81d00a3aa22a470a
|
4
|
+
data.tar.gz: 5591f0fd49b0dd594b292fed1d4afce9bba3ab60bb23a3aa697a0b0c93957eb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10c04aa1bdd5d23a8057fabe04d4f9e9736d8a109b27042bb8f8133cbe6bbdce3036f4bf9c2e31b9773f48285ffde8c5e5bd590f01c71c72d6c2c9f522228c1a
|
7
|
+
data.tar.gz: 83393a302754efa12fcb739756b57fec8b4f957f6903357bb091a5f6497740d43544fbffa4bc7ce717c9fedd4eeeb1b041945fc0b0638eb5725f7ce07b489fdf
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module SgtnClient
|
5
|
+
|
6
|
+
autoload :CacheUtil, "sgtn-client/util/cache-util"
|
7
|
+
|
8
|
+
class Source
|
9
|
+
|
10
|
+
def self.getSource(component, key)
|
11
|
+
locale = "en"
|
12
|
+
cache_key = SgtnClient::CacheUtil.get_cachekey(component, locale)
|
13
|
+
items = SgtnClient::CacheUtil.get_cache(cache_key)
|
14
|
+
if items.nil?
|
15
|
+
items = getBundle(component)
|
16
|
+
SgtnClient.logger.debug "Putting sources items into cache with key: " + cache_key
|
17
|
+
SgtnClient::CacheUtil.write_cache(cache_key, items)
|
18
|
+
else
|
19
|
+
SgtnClient.logger.debug "Getting sources from cache with key: " + cache_key
|
20
|
+
end
|
21
|
+
if items.nil?
|
22
|
+
return key
|
23
|
+
end
|
24
|
+
str = items[locale][key]
|
25
|
+
return str
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.loadBundles(locale)
|
29
|
+
env = SgtnClient::Config.default_environment
|
30
|
+
source_bundle = SgtnClient::Config.configurations[env]["source_bundle"]
|
31
|
+
SgtnClient.logger.debug "Loading bundles from path: " + source_bundle
|
32
|
+
Dir.children(source_bundle).each do |component|
|
33
|
+
yamlfile = File.join(source_bundle, component + "/" + locale + ".yml")
|
34
|
+
bundle = read_yml(yamlfile)
|
35
|
+
cachekey = SgtnClient::CacheUtil.get_cachekey(component, locale)
|
36
|
+
SgtnClient::CacheUtil.write_cache(cachekey,bundle)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def self.getBundle(component)
|
44
|
+
env = SgtnClient::Config.default_environment
|
45
|
+
source_bundle = SgtnClient::Config.configurations[env]["source_bundle"]
|
46
|
+
bundlepath = source_bundle + "/" + component + "/en.yml"
|
47
|
+
SgtnClient.logger.debug "Getting source from bundle: " + bundlepath
|
48
|
+
begin
|
49
|
+
bundle = read_yaml(bundlepath)
|
50
|
+
puts bundle
|
51
|
+
rescue => exception
|
52
|
+
SgtnClient.logger.error exception.message
|
53
|
+
end
|
54
|
+
return bundle
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.read_yml(file_name)
|
58
|
+
erb = ERB.new(File.read(file_name))
|
59
|
+
erb.filename = file_name
|
60
|
+
YAML.load(erb.result)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -5,25 +5,31 @@ module SgtnClient
|
|
5
5
|
module Core
|
6
6
|
autoload :Request, "sgtn-client/core/request"
|
7
7
|
autoload :Cache, "sgtn-client/core/cache"
|
8
|
+
autoload :CacheUtil, "sgtn-client/util/cache-util"
|
8
9
|
end
|
9
10
|
|
10
11
|
class Translation
|
11
12
|
|
12
|
-
include Logging
|
13
|
-
|
14
13
|
def self.getString(component, key, locale)
|
15
|
-
cache_key = get_cachekey(component, locale)
|
16
|
-
SgtnClient::
|
17
|
-
items = get_cache(cache_key)
|
14
|
+
cache_key = SgtnClient::CacheUtil.get_cachekey(component, locale)
|
15
|
+
items = SgtnClient::CacheUtil.get_cache(cache_key)
|
18
16
|
if items.nil?
|
19
17
|
items = getTranslations(component, locale)
|
20
|
-
write_cache(cache_key, items)
|
18
|
+
SgtnClient::CacheUtil.write_cache(cache_key, items)
|
19
|
+
else
|
20
|
+
SgtnClient.logger.debug "Getting translations from cache with key: " + cache_key
|
21
21
|
end
|
22
22
|
if items.nil?
|
23
23
|
return key
|
24
24
|
end
|
25
25
|
str = items["messages"][key]
|
26
|
-
|
26
|
+
|
27
|
+
if str.nil?
|
28
|
+
return SgtnClient::Source.getSource(component, key)
|
29
|
+
else
|
30
|
+
return str
|
31
|
+
end
|
32
|
+
|
27
33
|
end
|
28
34
|
|
29
35
|
private
|
@@ -42,9 +48,9 @@ module SgtnClient
|
|
42
48
|
env = SgtnClient::Config.default_environment
|
43
49
|
product_name = SgtnClient::Config.configurations[env]["product_name"]
|
44
50
|
version = SgtnClient::Config.configurations[env]["version"]
|
45
|
-
|
46
|
-
bundlepath =
|
47
|
-
SgtnClient.logger.
|
51
|
+
translation_bundle = SgtnClient::Config.configurations[env]["translation_bundle"]
|
52
|
+
bundlepath = translation_bundle + product_name + "/" + version + "/" + component + "/messages_" + locale + ".json"
|
53
|
+
SgtnClient.logger.debug "Getting translations from offline bundle: " + bundlepath
|
48
54
|
begin
|
49
55
|
file = File.read(bundlepath)
|
50
56
|
data_hash = JSON.parse(file)
|
@@ -58,7 +64,7 @@ module SgtnClient
|
|
58
64
|
env = SgtnClient::Config.default_environment
|
59
65
|
product_name = SgtnClient::Config.configurations[env]["product_name"]
|
60
66
|
vip_server = SgtnClient::Config.configurations[env]["vip_server"]
|
61
|
-
SgtnClient.logger.
|
67
|
+
SgtnClient.logger.debug "Getting translations from server: " + vip_server
|
62
68
|
version = SgtnClient::Config.configurations[env]["version"]
|
63
69
|
url = vip_server + "/i18n/api/v2/translation/products/" + product_name + "/versions/" + version + "/locales/" + locale + "/components/" + component+ "?checkTranslationStatus=false&machineTranslation=false&pseudo=false"
|
64
70
|
begin
|
@@ -72,21 +78,6 @@ module SgtnClient
|
|
72
78
|
return obj
|
73
79
|
end
|
74
80
|
|
75
|
-
def self.get_cache(cache_key)
|
76
|
-
items = SgtnClient::Core::Cache.get(cache_key)
|
77
|
-
return items
|
78
|
-
end
|
79
|
-
|
80
|
-
def self.write_cache(cache_key, items)
|
81
|
-
SgtnClient::Core::Cache.put(cache_key, items, 144000)
|
82
|
-
end
|
83
|
-
|
84
|
-
def self.get_cachekey(component, locale)
|
85
|
-
env = SgtnClient::Config.default_environment
|
86
|
-
product_name = SgtnClient::Config.configurations[env]["product_name"]
|
87
|
-
version = SgtnClient::Config.configurations[env]["version"]
|
88
|
-
return product_name + "_" + version + "_" + component + "_" + locale
|
89
|
-
end
|
90
81
|
end
|
91
82
|
|
92
83
|
end
|
@@ -23,7 +23,8 @@ module SgtnClient::Core
|
|
23
23
|
|
24
24
|
def self.put(key, value, ttl=nil)
|
25
25
|
ttl ||= @opts[:ttl]
|
26
|
-
|
26
|
+
# hours from new
|
27
|
+
$data[key] = Entry.new(DateTime.new + Rational(ttl, 24), value)
|
27
28
|
end
|
28
29
|
|
29
30
|
def self.delete(key)
|
@@ -39,7 +39,8 @@ module SgtnClient
|
|
39
39
|
:mode, :endpoint, :merchant_endpoint, :platform_endpoint, :ipn_endpoint,
|
40
40
|
:rest_endpoint, :rest_token_endpoint, :client_id, :client_secret,
|
41
41
|
:openid_endpoint, :openid_redirect_uri, :openid_client_id, :openid_client_secret,
|
42
|
-
:verbose_logging, :product_name, :version, :vip_server, :bundle_mode,
|
42
|
+
:verbose_logging, :product_name, :version, :vip_server, :bundle_mode,
|
43
|
+
:translation_bundle, :source_bundle
|
43
44
|
|
44
45
|
|
45
46
|
# Create Config object
|
@@ -38,7 +38,7 @@ module SgtnClient
|
|
38
38
|
def logger=(logger)
|
39
39
|
@logger = logger
|
40
40
|
if Config.config.mode.eql? 'live' and @logger.level == Logger::DEBUG
|
41
|
-
@logger.warn "DEBUG log level not allowed in
|
41
|
+
@logger.warn "DEBUG log level not allowed in live mode for security of confidential information. Changing log level to INFO..."
|
42
42
|
@logger.level = Logger::INFO
|
43
43
|
end
|
44
44
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module SgtnClient
|
2
|
-
|
2
|
+
module Core
|
3
|
+
autoload :Cache, "sgtn-client/core/cache"
|
4
|
+
end
|
3
5
|
autoload :Translation, "sgtn-client/api/translation"
|
6
|
+
autoload :Source, "sgtn-client/api/source"
|
4
7
|
autoload :Config, "sgtn-client/core/config"
|
5
8
|
autoload :Logging, "sgtn-client/core/logging"
|
6
9
|
autoload :Exceptions, "sgtn-client/core/exceptions"
|
@@ -12,6 +15,7 @@ module SgtnClient
|
|
12
15
|
|
13
16
|
include Logging
|
14
17
|
def load(*args)
|
18
|
+
# load configuration file
|
15
19
|
begin
|
16
20
|
SgtnClient::Config.load(args[0], args[1])
|
17
21
|
rescue => exception
|
@@ -21,6 +25,7 @@ module SgtnClient
|
|
21
25
|
log.error exception.message
|
22
26
|
end
|
23
27
|
|
28
|
+
# create log file
|
24
29
|
file = './sgtnclient_d.log'
|
25
30
|
if args[2] != nil
|
26
31
|
file = args[2]
|
@@ -28,6 +33,19 @@ module SgtnClient
|
|
28
33
|
file = File.open(file, 'a')
|
29
34
|
file.sync = true
|
30
35
|
SgtnClient.logger = Logger.new(file)
|
36
|
+
|
37
|
+
# Set log level for sandbox mode
|
38
|
+
env = SgtnClient::Config.default_environment
|
39
|
+
mode = SgtnClient::Config.configurations[env]["mode"]
|
40
|
+
SgtnClient.logger.info "Current mode is: " + mode
|
41
|
+
if mode == 'sandbox'
|
42
|
+
SgtnClient.logger.level = Logger::DEBUG
|
43
|
+
else
|
44
|
+
SgtnClient.logger.level = Logger::INFO
|
45
|
+
end
|
46
|
+
|
47
|
+
# initialize cache
|
48
|
+
SgtnClient::Core::Cache.initialize()
|
31
49
|
end
|
32
50
|
|
33
51
|
def logger
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module SgtnClient
|
5
|
+
|
6
|
+
module Core
|
7
|
+
autoload :Cache, "sgtn-client/core/cache"
|
8
|
+
end
|
9
|
+
|
10
|
+
class CacheUtil
|
11
|
+
|
12
|
+
def self.get_cache(cache_key)
|
13
|
+
items = SgtnClient::Core::Cache.get(cache_key)
|
14
|
+
return items
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.write_cache(cache_key, items)
|
18
|
+
# expired after 24 hours
|
19
|
+
SgtnClient::Core::Cache.put(cache_key, items, 24)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.get_cachekey(component, locale)
|
23
|
+
env = SgtnClient::Config.default_environment
|
24
|
+
product_name = SgtnClient::Config.configurations[env]["product_name"]
|
25
|
+
version = SgtnClient::Config.configurations[env]["version"]
|
26
|
+
return product_name + "_" + version + "_" + component + "_" + locale
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/lib/version.rb
CHANGED
data/spec/config/sgtnclient.yml
CHANGED
@@ -29,7 +29,10 @@ test: &default
|
|
29
29
|
bundle_mode: offline
|
30
30
|
|
31
31
|
# # Offline Bundle Path
|
32
|
-
|
32
|
+
translation_bundle: ./spec/config/locales/l10n/bundles
|
33
|
+
|
34
|
+
# # Offline Bundle Path
|
35
|
+
source_bundle: ./spec/config/locales/default
|
33
36
|
|
34
37
|
development:
|
35
38
|
<<: *default
|
data/spec/unit/logging_spec.rb
CHANGED
@@ -25,8 +25,7 @@ describe SgtnClient::Logging do
|
|
25
25
|
|
26
26
|
it "write message to logger" do
|
27
27
|
test_message = "Example log message!!!"
|
28
|
-
SgtnClient.logger.
|
29
|
-
SgtnClient.logger.info "Example log message!!!!"
|
28
|
+
SgtnClient.logger.debug(test_message)
|
30
29
|
# @logger_file.rewind
|
31
30
|
# expect(@logger_file.read).to match test_message
|
32
31
|
end
|
data/spec/unit/offclient_spec.rb
CHANGED
@@ -5,11 +5,20 @@ describe SgtnClient do
|
|
5
5
|
|
6
6
|
before :each do
|
7
7
|
env = SgtnClient::Config.default_environment
|
8
|
-
SgtnClient::Config.configurations[env]["bundle_mode"] = '
|
8
|
+
SgtnClient::Config.configurations[env]["bundle_mode"] = 'online'
|
9
|
+
SgtnClient::Source.loadBundles("en")
|
9
10
|
end
|
10
11
|
|
11
12
|
it "GET" do
|
12
13
|
expect(SgtnClient::Translation.getString("JAVA", "com.vmware.loginsight.web.settings.stats.StatsTable.host", "zh-Hans")).to eq '主机'
|
14
|
+
# get from cache in 2nd time
|
15
|
+
expect(SgtnClient::Translation.getString("JAVA", "com.vmware.loginsight.web.settings.stats.StatsTable.host", "zh-Hans")).to eq '主机'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "NonExistingKey" do
|
19
|
+
expect(SgtnClient::Translation.getString("JAVA", "hello", "zh-Hans")).to eq 'Hello world'
|
20
|
+
# get from cache in 2nd time
|
21
|
+
expect(SgtnClient::Translation.getString("JAVA", "hello", "zh-Hans")).to eq 'Hello world'
|
13
22
|
end
|
14
23
|
end
|
15
24
|
|
@@ -1,15 +1,24 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SgtnClient do
|
4
|
-
describe "
|
4
|
+
describe "OnlineAPI" do
|
5
5
|
|
6
6
|
before :each do
|
7
7
|
env = SgtnClient::Config.default_environment
|
8
8
|
SgtnClient::Config.configurations[env]["bundle_mode"] = 'online'
|
9
|
+
SgtnClient::Source.loadBundles("en")
|
9
10
|
end
|
10
11
|
|
11
12
|
it "GET" do
|
12
13
|
expect(SgtnClient::Translation.getString("JAVA", "com.vmware.loginsight.web.settings.stats.StatsTable.host", "zh-Hans")).to eq '主机'
|
14
|
+
# get from cache in 2nd time
|
15
|
+
expect(SgtnClient::Translation.getString("JAVA", "com.vmware.loginsight.web.settings.stats.StatsTable.host", "zh-Hans")).to eq '主机'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "NonExistingKey" do
|
19
|
+
expect(SgtnClient::Translation.getString("JAVA", "hello", "zh-Hans")).to eq 'Hello world'
|
20
|
+
# get from cache in 2nd time
|
21
|
+
expect(SgtnClient::Translation.getString("JAVA", "hello", "zh-Hans")).to eq 'Hello world'
|
13
22
|
end
|
14
23
|
end
|
15
24
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: singleton-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
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: 2021-05-
|
11
|
+
date: 2021-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -216,6 +216,7 @@ files:
|
|
216
216
|
- lib/generators/sgtnclient/install_generator.rb
|
217
217
|
- lib/generators/sgtnclient/templates/sgtnclient.rb
|
218
218
|
- lib/generators/sgtnclient/templates/sgtnclient.yml
|
219
|
+
- lib/sgtn-client/api/source.rb
|
219
220
|
- lib/sgtn-client/api/translation.rb
|
220
221
|
- lib/sgtn-client/core/cache.rb
|
221
222
|
- lib/sgtn-client/core/config.rb
|
@@ -223,8 +224,10 @@ files:
|
|
223
224
|
- lib/sgtn-client/core/logging.rb
|
224
225
|
- lib/sgtn-client/core/request.rb
|
225
226
|
- lib/sgtn-client/sgtn-client.rb
|
227
|
+
- lib/sgtn-client/util/cache-util.rb
|
226
228
|
- lib/singleton-ruby.rb
|
227
229
|
- lib/version.rb
|
230
|
+
- spec/config/locales/default/JAVA/en.yml
|
228
231
|
- spec/config/locales/l10n/bundles/logInsight/4.8.1/JAVA/messages_de.json
|
229
232
|
- spec/config/locales/l10n/bundles/logInsight/4.8.1/JAVA/messages_en.json
|
230
233
|
- spec/config/locales/l10n/bundles/logInsight/4.8.1/JAVA/messages_latest.json
|
@@ -266,6 +269,7 @@ signing_key:
|
|
266
269
|
specification_version: 4
|
267
270
|
summary: Singleton client for Ruby.
|
268
271
|
test_files:
|
272
|
+
- spec/config/locales/default/JAVA/en.yml
|
269
273
|
- spec/config/locales/l10n/bundles/logInsight/4.8.1/JAVA/messages_de.json
|
270
274
|
- spec/config/locales/l10n/bundles/logInsight/4.8.1/JAVA/messages_en.json
|
271
275
|
- spec/config/locales/l10n/bundles/logInsight/4.8.1/JAVA/messages_latest.json
|