istox 0.1.137 → 0.1.138

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- istox (0.1.136)
4
+ istox (0.1.134)
5
5
  awesome_print
6
6
  binding_of_caller
7
7
  bunny (>= 2.12.0)
@@ -75,6 +75,7 @@ GEM
75
75
  uniform_notifier (~> 1.11.0)
76
76
  bunny (2.14.4)
77
77
  amq-protocol (~> 2.3, >= 2.3.0)
78
+ coderay (1.1.2)
78
79
  concurrent-ruby (1.1.6)
79
80
  crass (1.0.6)
80
81
  database_cleaner (1.6.2)
@@ -151,6 +152,11 @@ GEM
151
152
  oj (~> 3.10)
152
153
  paranoia (2.4.2)
153
154
  activerecord (>= 4.0, < 6.1)
155
+ pry (0.12.2)
156
+ coderay (~> 1.1.0)
157
+ method_source (~> 0.9.0)
158
+ pry-rails (0.3.9)
159
+ pry (>= 0.10.4)
154
160
  rack (2.2.2)
155
161
  rack-test (1.1.0)
156
162
  rack (>= 1.0, < 3)
@@ -254,6 +260,8 @@ DEPENDENCIES
254
260
  faker (~> 1.7.3)
255
261
  fakeredis
256
262
  istox!
263
+ pry
264
+ pry-rails
257
265
  rails (~> 5.2.1)
258
266
  rake (~> 10.0)
259
267
  rspec (~> 3.0)
data/istox.gemspec CHANGED
@@ -35,14 +35,14 @@ Gem::Specification.new do |spec|
35
35
  spec.add_dependency 'bunny', '>= 2.12.0'
36
36
  spec.add_dependency 'graphlient'
37
37
  spec.add_dependency 'gruf'
38
- spec.add_dependency 'istox_gruf'
39
38
  spec.add_dependency 'hashie', '~> 3.5.7'
40
- spec.add_dependency 'redis-rails', '~> 5.0.2'
39
+ spec.add_dependency 'istox_gruf'
41
40
  spec.add_dependency 'listen', '~> 3.0.5'
42
41
  spec.add_dependency 'ougai'
43
42
  spec.add_dependency 'paranoia', '~> 2.2'
44
43
  spec.add_dependency 'redis', '>= 2.0.0'
45
44
  spec.add_dependency 'redis-namespace', '>= 1.0.0'
45
+ spec.add_dependency 'redis-rails', '~> 5.0.2'
46
46
  spec.add_dependency 'vault', '~> 0.1'
47
47
  spec.add_development_dependency 'bullet', '~> 5.7.5'
48
48
  spec.add_development_dependency 'bundler', '~> 1.16'
@@ -50,6 +50,8 @@ Gem::Specification.new do |spec|
50
50
  spec.add_development_dependency 'factory_bot_rails', '~> 4.8.2'
51
51
  spec.add_development_dependency 'faker', '~> 1.7.3'
52
52
  spec.add_development_dependency 'fakeredis'
53
+ spec.add_development_dependency 'pry'
54
+ spec.add_development_dependency 'pry-rails'
53
55
  spec.add_development_dependency 'rails', '~> 5.2.1'
54
56
  spec.add_development_dependency 'rake', '~> 10.0'
55
57
  spec.add_development_dependency 'rspec', '~> 3.0'
data/lib/istox.rb CHANGED
@@ -33,6 +33,7 @@ module Istox
33
33
  require 'istox/helpers/regex_helper'
34
34
  require 'istox/helpers/result_handler'
35
35
  require 'istox/helpers/redis'
36
+ require 'istox/helpers/remote_model_cache'
36
37
  require 'istox/models/blockchain_receipt'
37
38
  require 'istox/models/concerns/blockchain_receipt_query'
38
39
  require 'istox/consumers/blockchain_status_handler'
@@ -0,0 +1,76 @@
1
+ require 'istox/helpers/logger'
2
+
3
+ module Istox
4
+ class RemoteModelCache
5
+ class << self
6
+ #### keys must be an array
7
+ def cache(data:, key:, fields: nil, field: nil)
8
+ fields = [] if fields.blank?
9
+ fields.push(field) if field.present?
10
+
11
+ key = key.to_s
12
+
13
+ raise 'Fields cannot be empty' if fields.empty?
14
+
15
+ log.debug "Writing data to cache, key: #{key}, fields: #{fields.inspect}"
16
+ log.debug "Cache data: #{data.inspect}"
17
+
18
+ data = data.to_json unless data.instance_of?(String)
19
+
20
+ results = fields.map do |f|
21
+ redis.hset(key, f.to_s, data)
22
+ end
23
+
24
+ log.debug "Cache results: #{results.inspect}"
25
+ end
26
+
27
+ def remove(key:, fields: nil, field: nil)
28
+ fields = [] if fields.blank?
29
+ fields.push(field) if field.present?
30
+
31
+ key = key.to_s
32
+
33
+ raise 'Fields cannot be empty' if fields.empty?
34
+
35
+ log.debug "Removing data from cache, key: #{key}, fields: #{fields.inspect}"
36
+
37
+ fields = fields.map(&:to_s)
38
+
39
+ result = redis.hdel(key, fields)
40
+
41
+ log.debug "Delete result: #{result.inspect}"
42
+ end
43
+
44
+ def get(key:, field:)
45
+ raise 'You must provide a callback block if cache doesnt exist' unless block_given?
46
+
47
+ key = key.to_s
48
+ field = field.to_s
49
+
50
+ result = redis.hget(key, field)
51
+
52
+ log.debug "Getting data from cache, key: #{key}, field: #{field}, result: #{result.inspect}"
53
+
54
+ if result.present?
55
+ begin
56
+ return ::Istox::CommonHelper.to_open_struct(JSON.parse(result))
57
+ rescue StandardError => e
58
+ log.warn('Unable to process result from cache store, is it not a json?')
59
+ log.warn(e)
60
+ end
61
+ else
62
+ log.debug 'Fallback to data retrieval block.'
63
+ end
64
+
65
+ yield if block_given?
66
+ end
67
+
68
+ def redis
69
+ @redis ||= Redis::Namespace.new(:platform_cache, redis: Redis.new(
70
+ url: ENV['REDIS_URL'] || 'redis://127.0.0.1:16379',
71
+ db: 5
72
+ ))
73
+ end
74
+ end
75
+ end
76
+ end
data/lib/istox/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Istox
2
- VERSION = '0.1.137'.freeze
2
+ VERSION = '0.1.138'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: istox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.137
4
+ version: 0.1.138
5
5
  platform: ruby
6
6
  authors:
7
7
  - Siong Leng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-02 00:00:00.000000000 Z
11
+ date: 2020-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: istox_gruf
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: hashie
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -109,19 +95,19 @@ dependencies:
109
95
  - !ruby/object:Gem::Version
110
96
  version: 3.5.7
111
97
  - !ruby/object:Gem::Dependency
112
- name: redis-rails
98
+ name: istox_gruf
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
- - - "~>"
101
+ - - ">="
116
102
  - !ruby/object:Gem::Version
117
- version: 5.0.2
103
+ version: '0'
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
- - - "~>"
108
+ - - ">="
123
109
  - !ruby/object:Gem::Version
124
- version: 5.0.2
110
+ version: '0'
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: listen
127
113
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +178,20 @@ dependencies:
192
178
  - - ">="
193
179
  - !ruby/object:Gem::Version
194
180
  version: 1.0.0
181
+ - !ruby/object:Gem::Dependency
182
+ name: redis-rails
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 5.0.2
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 5.0.2
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: vault
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -290,6 +290,34 @@ dependencies:
290
290
  - - ">="
291
291
  - !ruby/object:Gem::Version
292
292
  version: '0'
293
+ - !ruby/object:Gem::Dependency
294
+ name: pry
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :development
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: pry-rails
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ type: :development
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
293
321
  - !ruby/object:Gem::Dependency
294
322
  name: rails
295
323
  requirement: !ruby/object:Gem::Requirement
@@ -420,6 +448,7 @@ files:
420
448
  - lib/istox/helpers/rate_limit.rb
421
449
  - lib/istox/helpers/redis.rb
422
450
  - lib/istox/helpers/regex_helper.rb
451
+ - lib/istox/helpers/remote_model_cache.rb
423
452
  - lib/istox/helpers/result_handler.rb
424
453
  - lib/istox/helpers/subscriber.rb
425
454
  - lib/istox/helpers/vault.rb
@@ -446,7 +475,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
446
475
  - !ruby/object:Gem::Version
447
476
  version: '0'
448
477
  requirements: []
449
- rubygems_version: 3.0.8
478
+ rubygems_version: 3.0.6
450
479
  signing_key:
451
480
  specification_version: 4
452
481
  summary: istox backend shared gem