istox 0.1.137 → 0.1.138

Sign up to get free protection for your applications and to get access to all the features.
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