dpay-ruby 0.1.1

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.
@@ -0,0 +1,101 @@
1
+ module DPay
2
+ module Type
3
+
4
+ # See: https://github.com/xeroc/piston-lib/blob/34a7525cee119ec9b24a99577ede2d54466fca0e/dpaybase/operations.py
5
+ class Amount < BaseType
6
+ attr_reader :amount, :precision, :nai, :asset
7
+
8
+ def self.to_h(amount)
9
+ new(amount).to_h
10
+ end
11
+
12
+ def self.to_s(amount)
13
+ new(amount).to_s
14
+ end
15
+
16
+ def initialize(value)
17
+ super(:amount, value)
18
+
19
+ case value
20
+ when Array
21
+ @amount, @precision, @nai = value
22
+ @asset = case @nai
23
+ when '@@000000013' then 'BBD'
24
+ when '@@000000021' then 'BEX'
25
+ when '@@000000037' then 'VESTS'
26
+ else; raise TypeError, "Asset #{@nai} unknown."
27
+ end
28
+
29
+ @amount = "%.#{@precision}f" % (@amount.to_f / 10 ** @precision)
30
+ when Hash
31
+ @amount, @precision, @nai = value.map do |k, v|
32
+ v if %i(amount precision nai).include? k.to_sym
33
+ end.compact
34
+
35
+ @asset = case @nai
36
+ when '@@000000013' then 'BBD'
37
+ when '@@000000021' then 'BEX'
38
+ when '@@000000037' then 'VESTS'
39
+ else; raise TypeError, "Asset #{@nai} unknown."
40
+ end
41
+
42
+ @amount = "%.#{@precision}f" % (@amount.to_f / 10 ** @precision)
43
+ when Amount
44
+ @precision = value.precision
45
+ @nai = value.nai
46
+ @asset = value.asset
47
+ @amount = value.amount
48
+ else
49
+ @amount, @asset = value.strip.split(' ') rescue ['', '']
50
+ @precision = case @asset
51
+ when 'BEX' then 3
52
+ when 'VESTS' then 6
53
+ when 'BBD' then 3
54
+ else; raise TypeError, "Asset #{@asset} unknown."
55
+ end
56
+ end
57
+ end
58
+
59
+ def to_bytes
60
+ asset = @asset.ljust(7, "\x00")
61
+ amount = (@amount.to_f * 10 ** @precision).round
62
+
63
+ [amount].pack('q') +
64
+ [@precision].pack('c') +
65
+ asset
66
+ end
67
+
68
+ def to_a
69
+ case @asset
70
+ when 'BEX' then [(@amount.to_f * 1000).to_i.to_s, 3, '@@000000021']
71
+ when 'VESTS' then [(@amount.to_f * 1000000).to_i.to_s, 6, '@@000000037']
72
+ when 'BBD' then [(@amount.to_f * 1000).to_i.to_s, 3, '@@000000013']
73
+ end
74
+ end
75
+
76
+ def to_h
77
+ case @asset
78
+ when 'BEX' then {
79
+ amount: (@amount.to_f * 1000).to_i.to_s,
80
+ precision: 3,
81
+ nai: '@@000000021'
82
+ }
83
+ when 'VESTS' then {
84
+ amount: (@amount.to_f * 1000000).to_i.to_s,
85
+ precision: 6,
86
+ nai: '@@000000037'
87
+ }
88
+ when 'BBD' then {
89
+ amount: (@amount.to_f * 1000).to_i.to_s,
90
+ precision: 3,
91
+ nai: '@@000000013'
92
+ }
93
+ end
94
+ end
95
+
96
+ def to_s
97
+ "#{@amount} #{@asset}"
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,10 @@
1
+ module DPay
2
+ module Type
3
+ class BaseType
4
+ def initialize(key, value)
5
+ @key = key
6
+ @value = value
7
+ end
8
+ end
9
+ end
10
+ end
data/lib/dpay/utils.rb ADDED
@@ -0,0 +1,17 @@
1
+ module DPay
2
+ module Utils
3
+ def hexlify(s)
4
+ a = []
5
+ if s.respond_to? :each_byte
6
+ s.each_byte { |b| a << sprintf('%02X', b) }
7
+ else
8
+ s.each { |b| a << sprintf('%02X', b) }
9
+ end
10
+ a.join.downcase
11
+ end
12
+
13
+ def unhexlify(s)
14
+ s.split.pack('H*')
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,4 @@
1
+ module DPay
2
+ VERSION = '0.1.1'
3
+ AGENT_ID = "dpay-ruby/#{VERSION}"
4
+ end
metadata ADDED
@@ -0,0 +1,392 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dpay-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - dPay, DAO
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-09-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.16.1
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.16'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.16.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: rake
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '12.3'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 12.3.0
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '12.3'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 12.3.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: minitest
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '5.10'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 5.10.3
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '5.10'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 5.10.3
73
+ - !ruby/object:Gem::Dependency
74
+ name: minitest-line
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.6'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.6.4
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.6'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 0.6.4
93
+ - !ruby/object:Gem::Dependency
94
+ name: minitest-proveit
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '1.0'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.0.0
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.0'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 1.0.0
113
+ - !ruby/object:Gem::Dependency
114
+ name: webmock
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '3.3'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 3.3.0
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '3.3'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 3.3.0
133
+ - !ruby/object:Gem::Dependency
134
+ name: simplecov
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '0.15'
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 0.15.1
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '0.15'
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 0.15.1
153
+ - !ruby/object:Gem::Dependency
154
+ name: vcr
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '4.0'
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: 4.0.0
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: '4.0'
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 4.0.0
173
+ - !ruby/object:Gem::Dependency
174
+ name: yard
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '0.9'
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: 0.9.12
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '0.9'
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: 0.9.12
193
+ - !ruby/object:Gem::Dependency
194
+ name: pry
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '0.11'
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: 0.11.3
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '0.11'
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: 0.11.3
213
+ - !ruby/object:Gem::Dependency
214
+ name: awesome_print
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - "~>"
218
+ - !ruby/object:Gem::Version
219
+ version: '1.8'
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: 1.8.0
223
+ type: :development
224
+ prerelease: false
225
+ version_requirements: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '1.8'
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: 1.8.0
233
+ - !ruby/object:Gem::Dependency
234
+ name: json
235
+ requirement: !ruby/object:Gem::Requirement
236
+ requirements:
237
+ - - "~>"
238
+ - !ruby/object:Gem::Version
239
+ version: '2.1'
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ version: 2.1.0
243
+ type: :runtime
244
+ prerelease: false
245
+ version_requirements: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - "~>"
248
+ - !ruby/object:Gem::Version
249
+ version: '2.1'
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: 2.1.0
253
+ - !ruby/object:Gem::Dependency
254
+ name: logging
255
+ requirement: !ruby/object:Gem::Requirement
256
+ requirements:
257
+ - - "~>"
258
+ - !ruby/object:Gem::Version
259
+ version: '2.2'
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: 2.2.0
263
+ type: :runtime
264
+ prerelease: false
265
+ version_requirements: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - "~>"
268
+ - !ruby/object:Gem::Version
269
+ version: '2.2'
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ version: 2.2.0
273
+ - !ruby/object:Gem::Dependency
274
+ name: hashie
275
+ requirement: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - "~>"
278
+ - !ruby/object:Gem::Version
279
+ version: '3.5'
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: 3.5.7
283
+ type: :runtime
284
+ prerelease: false
285
+ version_requirements: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - "~>"
288
+ - !ruby/object:Gem::Version
289
+ version: '3.5'
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: 3.5.7
293
+ - !ruby/object:Gem::Dependency
294
+ name: bitcoin-ruby
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - "~>"
298
+ - !ruby/object:Gem::Version
299
+ version: '0.0'
300
+ - - ">="
301
+ - !ruby/object:Gem::Version
302
+ version: 0.0.18
303
+ type: :runtime
304
+ prerelease: false
305
+ version_requirements: !ruby/object:Gem::Requirement
306
+ requirements:
307
+ - - "~>"
308
+ - !ruby/object:Gem::Version
309
+ version: '0.0'
310
+ - - ">="
311
+ - !ruby/object:Gem::Version
312
+ version: 0.0.18
313
+ - !ruby/object:Gem::Dependency
314
+ name: ffi
315
+ requirement: !ruby/object:Gem::Requirement
316
+ requirements:
317
+ - - "~>"
318
+ - !ruby/object:Gem::Version
319
+ version: '1.9'
320
+ - - ">="
321
+ - !ruby/object:Gem::Version
322
+ version: 1.9.23
323
+ type: :runtime
324
+ prerelease: false
325
+ version_requirements: !ruby/object:Gem::Requirement
326
+ requirements:
327
+ - - "~>"
328
+ - !ruby/object:Gem::Version
329
+ version: '1.9'
330
+ - - ">="
331
+ - !ruby/object:Gem::Version
332
+ version: 1.9.23
333
+ description: Client for accessing the dPay blockchain.
334
+ email:
335
+ - labs@dpays.io
336
+ executables: []
337
+ extensions: []
338
+ extra_rdoc_files: []
339
+ files:
340
+ - ".gitignore"
341
+ - CONTRIBUTING.md
342
+ - Gemfile
343
+ - Gemfile.lock
344
+ - LICENSE
345
+ - README.md
346
+ - Rakefile
347
+ - dpay-ruby.gemspec
348
+ - gource.sh
349
+ - images/Anthony Martin.png
350
+ - lib/dpay.rb
351
+ - lib/dpay/api.rb
352
+ - lib/dpay/base_error.rb
353
+ - lib/dpay/block_api.rb
354
+ - lib/dpay/broadcast.rb
355
+ - lib/dpay/chain_config.rb
356
+ - lib/dpay/formatter.rb
357
+ - lib/dpay/jsonrpc.rb
358
+ - lib/dpay/mixins/retriable.rb
359
+ - lib/dpay/rpc/base_client.rb
360
+ - lib/dpay/rpc/http_client.rb
361
+ - lib/dpay/rpc/thread_safe_http_client.rb
362
+ - lib/dpay/stream.rb
363
+ - lib/dpay/transaction_builder.rb
364
+ - lib/dpay/type/amount.rb
365
+ - lib/dpay/type/base_type.rb
366
+ - lib/dpay/utils.rb
367
+ - lib/dpay/version.rb
368
+ homepage: https://github.com/dpays/dpay-ruby
369
+ licenses:
370
+ - MIT
371
+ metadata: {}
372
+ post_install_message:
373
+ rdoc_options: []
374
+ require_paths:
375
+ - lib
376
+ required_ruby_version: !ruby/object:Gem::Requirement
377
+ requirements:
378
+ - - ">="
379
+ - !ruby/object:Gem::Version
380
+ version: '0'
381
+ required_rubygems_version: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - ">="
384
+ - !ruby/object:Gem::Version
385
+ version: '0'
386
+ requirements: []
387
+ rubyforge_project:
388
+ rubygems_version: 2.7.7
389
+ signing_key:
390
+ specification_version: 4
391
+ summary: dPay Ruby Client
392
+ test_files: []