istox 0.2.14 → 0.2.15.pre.50

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: ca1e8a56cf58ec65db8e7c74bce91228a9c58f6fac41fba4dd8569263fe293ae
4
- data.tar.gz: e222955b4c24d1422f43cccc266251d77bf79322df1d3b6e24c7e8e598ced3cd
3
+ metadata.gz: '0756458578f3bf4fdd2a7cef528e51c741a2858f9c4208eea69a74768639ad8c'
4
+ data.tar.gz: 736d38e168557939cd3649673817d07b47139278fd32e68473316c44bc0cc37f
5
5
  SHA512:
6
- metadata.gz: 293000d6656fc803c265a7dd025824a782895bb86d50c4b9e64f1c3a53b64695c68b5b72498aeff9750a800522368811371bf5d6657b2a7b39fb531141d33ca5
7
- data.tar.gz: a12c26ffb85108b2b664245f57e5cf86dbd6a3dbc952dcf5c06d3d01fff1bcdeaffd5a68792c172bfd4722166dac74d26fdaaa2887afe6c154c63b2860fa22d7
6
+ metadata.gz: 708a1326e1abe667a3a3b9303a1ef506f599051e1948b3fb7cfc530dacb263471c359f4e156765e39846b64a2b8c5f883002ed359eacd4d153def6b5273b4da7
7
+ data.tar.gz: 3eea7531af5cb2c1d7016da222410d31b52d766eaf65105669042feca0e0f7df3a1b7066272ebec0829825c4f96f13e52cd22e297eea82ed7fb08e9e4aa7682a
data/.gitignore CHANGED
File without changes
data/.rubocop.yml CHANGED
File without changes
data/.solargraph.yml CHANGED
File without changes
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/Gemfile CHANGED
File without changes
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- istox (0.2.13)
4
+ istox (0.2.15)
5
5
  amazing_print
6
6
  awesome_print
7
7
  aws-sdk-sns (~> 1)
@@ -134,7 +134,7 @@ GEM
134
134
  ffi (1.15.3)
135
135
  globalid (0.4.2)
136
136
  activesupport (>= 4.2.0)
137
- google-protobuf (3.17.3)
137
+ google-protobuf (3.17.3-universal-darwin)
138
138
  googleapis-common-protos-types (1.1.0)
139
139
  google-protobuf (~> 3.14)
140
140
  graphlient (0.5.0)
@@ -145,7 +145,7 @@ GEM
145
145
  graphql-client (0.16.0)
146
146
  activesupport (>= 3.0)
147
147
  graphql (~> 1.8)
148
- grpc (1.38.0)
148
+ grpc (1.38.0-universal-darwin)
149
149
  google-protobuf (~> 3.15)
150
150
  googleapis-common-protos-types (~> 1.0)
151
151
  grpc-tools (1.38.0)
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
File without changes
@@ -44,6 +44,9 @@ module Istox
44
44
  ## for request there we need a lock to prevent there is not duplicate request exist for single model
45
45
  ::Istox::RaceConditionHelper.acquire!(key) if is_request
46
46
 
47
+ ## validate the request, this validation is overridable by inherited class
48
+ receipt.validate_request!(model.class.name, model.id) if is_request
49
+
47
50
  # delete the previous existing blockchain receipts
48
51
  klass.where(resource_name: model.class.name, resource_id: model.id).destroy_all
49
52
 
@@ -1,4 +1,3 @@
1
- # rubocop:disable Naming/UncommunicativeMethodParamName
2
1
  module Istox
3
2
  class FMath
4
3
  class << self
@@ -74,6 +73,20 @@ module Istox
74
73
  ::BigDecimal.new(x.to_s).round(digits).to_s
75
74
  end
76
75
 
76
+ def round_half_up(x, digits)
77
+ BigDecimal.mode(BigDecimal::ROUND_MODE, :half_up)
78
+ x = 0 if x.blank?
79
+ ::BigDecimal.new(x.to_s).round(digits).to_s
80
+ end
81
+
82
+ def round(x, digits, rounding_mechanism: :natural)
83
+ return round_up(x, digits) if rounding_mechanism == 'up'
84
+
85
+ return round_down(x, digits) if rounding_mechanism == 'down'
86
+
87
+ round_half_up(x, digits)
88
+ end
89
+
77
90
  private
78
91
 
79
92
  def to_fixed(x)
@@ -86,4 +99,3 @@ module Istox
86
99
  end
87
100
  end
88
101
  end
89
- # rubocop:enable Naming/UncommunicativeMethodParamName
File without changes
File without changes
@@ -10,12 +10,26 @@ module Istox
10
10
  def acquire(key, expired_seconds: 20)
11
11
  result = request_redis.set('race-condition||' + key.to_s, 'EMPTY', nx: true, ex: expired_seconds.to_i.seconds)
12
12
 
13
+ log.info("Acquiring lock for key: #{key}, expired in #{expired_seconds} seconds, result: #{result}")
14
+
13
15
  # if result false means the key already exist
14
- result
16
+ [true, 1].include?(result)
15
17
  end
16
18
 
17
19
  def release(key)
18
20
  request_redis.del('race-condition||' + key.to_s)
21
+
22
+ log.info("Releasing lock for key: #{key}")
23
+ end
24
+
25
+ ### lock with block
26
+ def lock!(key, expired_seconds: 20)
27
+ acquire!(key, expired_seconds: expired_seconds)
28
+ yield
29
+ release(key)
30
+ rescue StandardError => e
31
+ release(key)
32
+ raise e
19
33
  end
20
34
 
21
35
  def request_redis
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -5,5 +5,7 @@ module Istox
5
5
  def activity
6
6
  I18n.t("#{resource_name}.#{resource_action}") if resource_name.present? && resource_action.present?
7
7
  end
8
+
9
+ def validate_request!(model_name, model_id); end
8
10
  end
9
11
  end
data/lib/istox/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Istox
2
- VERSION = '0.2.14'.freeze
2
+ VERSION = '0.2.15-50'.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.2.14
4
+ version: 0.2.15.pre.50
5
5
  platform: ruby
6
6
  authors:
7
7
  - Siong Leng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-28 00:00:00.000000000 Z
11
+ date: 2021-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: amazing_print
@@ -530,11 +530,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
530
530
  version: '0'
531
531
  required_rubygems_version: !ruby/object:Gem::Requirement
532
532
  requirements:
533
- - - ">="
533
+ - - ">"
534
534
  - !ruby/object:Gem::Version
535
- version: '0'
535
+ version: 1.3.1
536
536
  requirements: []
537
- rubygems_version: 3.0.6
537
+ rubygems_version: 3.2.11
538
538
  signing_key:
539
539
  specification_version: 4
540
540
  summary: istox backend shared gem