dpay-ruby 0.1.1

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