ton_sdk_client 1.27.0 → 1.28.0
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/ton_sdk_client/debot.rb +106 -105
- data/lib/ton_sdk_client/helper.rb +1 -1
- data/lib/ton_sdk_client/interop.rb +1 -1
- data/lib/ton_sdk_client/net.rb +4 -4
- data/lib/ton_sdk_client/processing.rb +25 -15
- data/lib/ton_sdk_client/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bd88aaed45cdcc1f73fffa49f4d5a94209bc5de5d397cab2a17be7c66d5a8cc
|
4
|
+
data.tar.gz: 464507ab3c62098609c6e1a7509c3ccc3980d1206da9b2e27e1ad17c935c6004
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2d17c70082958459738405e2d0d82c7ca97dd88a8230f3bf8e4e978aa5612314550b3779225b36e62d6382f503156307dfc9af1e17814fb49f3114531aaccaf
|
7
|
+
data.tar.gz: e399086789160d65cf54eae69a3c6754505b08a14a7f10f07d75725455b4f9dde9d1ace169e352b15132f4580bea88b7677f5591ecbab517d7c3c911424b006c
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
all the changes are always according to the ones of the main TON SDK library; and on top on that, there may be additional ones
|
4
4
|
|
5
|
+
1.28.0
|
6
|
+
-----
|
7
|
+
* Changes `1.28.0` https://github.com/tonlabs/TON-SDK/blob/master/CHANGELOG.md#1280--2021-12-24
|
8
|
+
* Implement Debot module
|
9
|
+
|
5
10
|
1.27.0
|
6
11
|
-----
|
7
12
|
* Changes `1.27.0` https://github.com/tonlabs/TON-SDK/blob/master/CHANGELOG.md#1270--2021-12-03
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# TON SDK client in Ruby and for Ruby
|
2
2
|
|
3
3
|
[](https://rubygems.org/gems/ton_sdk_client)
|
4
|
-
[](https://github.com/tonlabs/TON-SDK/tree/1.28.0)
|
5
5
|
|
6
6
|
Ruby gem-client bindings for [TON SDK](https://github.com/tonlabs/TON-SDK) which allows one to communicate with [FreeTON](https://freeton.org) blockchain in Ruby.
|
7
7
|
|
data/lib/ton_sdk_client/debot.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
1
|
module TonSdk
|
2
|
-
|
3
|
-
# NOTE
|
4
|
-
# as of 28 apr 2021, in the main repository this module is still unstable
|
5
2
|
module Debot
|
6
3
|
|
7
4
|
#
|
@@ -21,22 +18,23 @@ module TonSdk
|
|
21
18
|
EXTERNAL_CALL_FAILED = 810
|
22
19
|
BROWSER_CALLBACK_FAILED = 811
|
23
20
|
OPERATION_REJECTED = 812
|
21
|
+
DEBOT_NO_CODE = 813
|
24
22
|
end
|
25
23
|
|
26
24
|
DebotAction = KwStruct.new(:description, :name, :action_type, :to, :attributes, :misc) do
|
27
25
|
def to_h
|
28
26
|
{
|
29
|
-
description:
|
30
|
-
name:
|
31
|
-
action_type:
|
32
|
-
to:
|
33
|
-
attributes:
|
34
|
-
misc:
|
27
|
+
description: description,
|
28
|
+
name: name,
|
29
|
+
action_type: action_type,
|
30
|
+
to: to,
|
31
|
+
attributes: attributes,
|
32
|
+
misc: misc
|
35
33
|
}
|
36
34
|
end
|
37
35
|
|
38
36
|
def self.from_json(j)
|
39
|
-
return
|
37
|
+
return if j.nil?
|
40
38
|
|
41
39
|
self.new(
|
42
40
|
description: j["description"],
|
@@ -49,20 +47,59 @@ module TonSdk
|
|
49
47
|
end
|
50
48
|
end
|
51
49
|
|
52
|
-
|
50
|
+
DebotInfo = KwStruct.new(
|
51
|
+
:name,
|
52
|
+
:version,
|
53
|
+
:publisher,
|
54
|
+
:caption,
|
55
|
+
:author,
|
56
|
+
:support,
|
57
|
+
:hello,
|
58
|
+
:language,
|
59
|
+
:dabi,
|
60
|
+
:icon,
|
61
|
+
:interfaces,
|
62
|
+
:dabi_version
|
63
|
+
) do
|
64
|
+
def initialize(
|
65
|
+
name: nil,
|
66
|
+
version: nil,
|
67
|
+
publisher: nil,
|
68
|
+
caption: nil,
|
69
|
+
author: nil,
|
70
|
+
support: nil,
|
71
|
+
hello: nil,
|
72
|
+
language: nil,
|
73
|
+
dabi: nil,
|
74
|
+
icon: nil,
|
75
|
+
interfaces: [],
|
76
|
+
dabi_version: nil
|
77
|
+
)
|
78
|
+
super
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
class DebotActivity
|
83
|
+
attr_reader :type, :msg, :dst, :out, :fee, :setcode, :signkey, :signing_box_handle
|
84
|
+
end
|
85
|
+
|
86
|
+
Spending = KwStruct.new(:amount, :dst)
|
87
|
+
|
88
|
+
ParamsOfInit = KwStruct.new(:address)
|
53
89
|
|
54
90
|
RegisteredDebot = KwStruct.new(:debot_handle, :debot_abi, :info) do
|
55
|
-
def to_h
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
91
|
+
def to_h
|
92
|
+
{
|
93
|
+
debot_handle: debot_handle,
|
94
|
+
debot_abi: debot_abi,
|
95
|
+
info: info.to_h
|
96
|
+
}
|
97
|
+
end
|
60
98
|
end
|
61
99
|
|
62
100
|
class ParamsOfAppDebotBrowser
|
63
101
|
private_class_method :new
|
64
102
|
|
65
|
-
# todo remove?
|
66
103
|
TYPE_VALUES = [
|
67
104
|
:log,
|
68
105
|
:switch,
|
@@ -75,61 +112,61 @@ module TonSdk
|
|
75
112
|
:approve
|
76
113
|
]
|
77
114
|
|
78
|
-
attr_reader :
|
115
|
+
attr_reader :type, :msg, :context_id, :action, :prompt, :debot_addr, :message, :activity
|
79
116
|
|
80
117
|
def self.new_with_type_log(msg)
|
81
|
-
@
|
118
|
+
@type = :log
|
82
119
|
@msg = msg
|
83
120
|
end
|
84
121
|
|
85
122
|
def self.new_with_type_switch(context_id)
|
86
|
-
@
|
123
|
+
@type = :switch
|
87
124
|
@context_id = context_id
|
88
125
|
end
|
89
126
|
|
90
127
|
def self.new_with_type_switch_completed
|
91
|
-
@
|
128
|
+
@type = :switch_completed
|
92
129
|
end
|
93
130
|
|
94
131
|
def self.new_with_type_show_action(action)
|
95
|
-
@
|
132
|
+
@type = :show_action
|
96
133
|
@action = action
|
97
134
|
end
|
98
135
|
|
99
136
|
def self.new_with_type_input(prompt)
|
100
|
-
@
|
137
|
+
@type = :input
|
101
138
|
@prompt = prompt
|
102
139
|
end
|
103
140
|
|
104
141
|
def self.new_with_type_get_signing_box
|
105
|
-
@
|
142
|
+
@type = :get_signing_box
|
106
143
|
end
|
107
144
|
|
108
145
|
def self.new_with_type_invoke_debot(debot_addr, action)
|
109
|
-
@
|
146
|
+
@type = :invoke_debot
|
110
147
|
@debot_addr = debot_addr
|
111
148
|
@action = action
|
112
149
|
end
|
113
150
|
|
114
151
|
def self.new_with_type_send(message)
|
115
|
-
@
|
152
|
+
@type = :send
|
116
153
|
@message = message
|
117
154
|
end
|
118
155
|
|
119
156
|
def self.new_with_type_approve(activity)
|
120
|
-
@
|
157
|
+
@type = :approve
|
121
158
|
@activity = activity
|
122
159
|
end
|
123
160
|
|
124
161
|
def to_h
|
125
162
|
{
|
126
|
-
type: Helper.sym_to_capitalized_case_str(
|
127
|
-
msg:
|
128
|
-
context_id:
|
129
|
-
action:
|
130
|
-
prompt:
|
131
|
-
debot_addr:
|
132
|
-
message:
|
163
|
+
type: Helper.sym_to_capitalized_case_str(type),
|
164
|
+
msg: msg,
|
165
|
+
context_id: context_id,
|
166
|
+
action: action,
|
167
|
+
prompt: prompt,
|
168
|
+
debot_addr: debot_addr,
|
169
|
+
message: message
|
133
170
|
}
|
134
171
|
end
|
135
172
|
|
@@ -173,118 +210,79 @@ module TonSdk
|
|
173
210
|
private
|
174
211
|
|
175
212
|
def self.parse_type(type_str)
|
176
|
-
|
177
|
-
|
178
|
-
|
213
|
+
parsed_type = Helper.capitalized_case_str_to_snake_case_sym(type_str)
|
214
|
+
|
215
|
+
unless TYPE_VALUES.include?(type_str)
|
216
|
+
raise ArgumentError.new("type #{type_str} is unknown; known types: #{TYPE_VALUES}")
|
179
217
|
end
|
180
218
|
|
181
|
-
|
219
|
+
parsed_type
|
182
220
|
end
|
183
221
|
end
|
184
222
|
|
185
223
|
class ResultOfAppDebotBrowser
|
186
224
|
private_class_method :new
|
187
225
|
|
188
|
-
attr_reader :
|
226
|
+
attr_reader :type, :value, :signing_box, :is_approved
|
189
227
|
|
190
228
|
def self.new_with_type_input(a)
|
191
|
-
@
|
229
|
+
@type = :input
|
192
230
|
@value = a
|
193
231
|
end
|
194
232
|
|
195
233
|
def self.new_with_type_get_signing_box(a)
|
196
|
-
@
|
234
|
+
@type = :get_signing_box
|
197
235
|
@signing_box = signing_box
|
198
236
|
end
|
199
237
|
|
200
238
|
def self.new_with_type_invoke_debot
|
201
|
-
@
|
239
|
+
@type = :invoke_debot
|
202
240
|
end
|
203
241
|
|
204
242
|
def self.new_with_type_approve(a)
|
205
|
-
@
|
243
|
+
@type = :approve
|
206
244
|
@is_approved = a
|
207
245
|
end
|
208
246
|
end
|
209
247
|
|
248
|
+
ParamsOfStart = KwStruct.new(:debot_handle)
|
249
|
+
|
210
250
|
ParamsOfFetch = KwStruct.new(:address)
|
211
251
|
|
252
|
+
ResultOfFetch = KwStruct.new(:info)
|
253
|
+
|
212
254
|
ParamsOfExecute = KwStruct.new(:debot_handle, :action) do
|
213
255
|
def to_h
|
214
256
|
{
|
215
|
-
debot_handle:
|
216
|
-
action:
|
257
|
+
debot_handle: debot_handle,
|
258
|
+
action: action.to_h
|
217
259
|
}
|
218
260
|
end
|
219
261
|
end
|
220
262
|
|
221
263
|
ParamsOfSend = KwStruct.new(:debot_handle, :message)
|
222
|
-
ParamsOfInit = KwStruct.new(:address)
|
223
|
-
DebotInfo = KwStruct.new(
|
224
|
-
:name,
|
225
|
-
:version,
|
226
|
-
:publisher,
|
227
|
-
:caption,
|
228
|
-
:author,
|
229
|
-
:support,
|
230
|
-
:hello,
|
231
|
-
:language,
|
232
|
-
:dabi,
|
233
|
-
:icon,
|
234
|
-
:interfaces
|
235
|
-
) do
|
236
|
-
def initialize(
|
237
|
-
name: nil,
|
238
|
-
version: nil,
|
239
|
-
publisher: nil,
|
240
|
-
caption: nil,
|
241
|
-
author: nil,
|
242
|
-
support: nil,
|
243
|
-
hello: nil,
|
244
|
-
language: nil,
|
245
|
-
dabi: nil,
|
246
|
-
icon: nil,
|
247
|
-
interfaces: []
|
248
|
-
)
|
249
|
-
super
|
250
|
-
end
|
251
|
-
end
|
252
|
-
|
253
|
-
ResultOfFetch = KwStruct.new(:info)
|
254
|
-
Spending = KwStruct.new(:amount, :dst)
|
255
|
-
|
256
|
-
class DebotActivity
|
257
|
-
private_class_method :new
|
258
|
-
|
259
|
-
attr_reader :type_, :msg, :dst, :out, :fee, :setcode, :signkey, :signing_box_handle
|
260
|
-
|
261
|
-
def self.new_with_type_transaction(msg:, dst:, out:, fee:, setcode:, signkey:, signing_box_handle:)
|
262
|
-
@type_ = :transaction
|
263
|
-
@msg = msg
|
264
|
-
@dst = dst
|
265
|
-
@out = out
|
266
|
-
@fee = fee
|
267
|
-
@setcode = setcode
|
268
|
-
@signkey = signkey
|
269
|
-
@signing_box_handle = signing_box_handle
|
270
|
-
end
|
271
|
-
|
272
|
-
def self.from_json(j)
|
273
|
-
# todo
|
274
|
-
end
|
275
|
-
end
|
276
|
-
|
277
264
|
|
265
|
+
ParamsOfRemove = KwStruct.new(:debot_handle)
|
278
266
|
|
279
267
|
#
|
280
268
|
# functions
|
281
269
|
#
|
282
270
|
|
283
|
-
def self.init(ctx, params, app_browser_obj)
|
284
|
-
Interop::request_to_native_lib(
|
271
|
+
def self.init(ctx, params, app_browser_obj = nil)
|
272
|
+
Interop::request_to_native_lib(
|
273
|
+
ctx,
|
274
|
+
"debot.init",
|
275
|
+
params
|
276
|
+
) do |resp|
|
285
277
|
if resp.success?
|
278
|
+
debot_info = resp.result["info"].transform_keys(&:to_sym)
|
279
|
+
debot_info[:dabi_version] = debot_info.delete(:dabiVersion)
|
286
280
|
yield NativeLibResponseResult.new(
|
287
|
-
result:
|
281
|
+
result: RegisteredDebot.new(
|
282
|
+
debot_handle: resp.result["debot_handle"],
|
283
|
+
debot_abi: resp.result["debot_abi"],
|
284
|
+
info: DebotInfo.new(**debot_info)
|
285
|
+
)
|
288
286
|
)
|
289
287
|
else
|
290
288
|
yield resp
|
@@ -317,9 +315,12 @@ module TonSdk
|
|
317
315
|
is_single_thread_only: false
|
318
316
|
) do |resp|
|
319
317
|
if resp.success?
|
318
|
+
debot_info = resp.result["info"].transform_keys(&:to_sym)
|
319
|
+
debot_info[:dabi_version] = debot_info.delete(:dabiVersion)
|
320
320
|
yield NativeLibResponseResult.new(
|
321
|
-
|
322
|
-
|
321
|
+
result: ResultOfFetch.new(
|
322
|
+
info: DebotInfo.new(**debot_info)
|
323
|
+
)
|
323
324
|
)
|
324
325
|
else
|
325
326
|
yield resp
|
@@ -148,7 +148,7 @@ module TonSdk
|
|
148
148
|
|
149
149
|
# using @@request_counter here to pass a @@request_counter and handlers and then retrieve them
|
150
150
|
# is probably isn't needed.
|
151
|
-
# Thanks to the way Ruby is, the same affect can be
|
151
|
+
# Thanks to the way Ruby is, the same affect can be achieved by a block which is an easier way.
|
152
152
|
# Nonetheless, @@request_counter is incremented with each request and then sent out to a server
|
153
153
|
# in order to keep a server happy,
|
154
154
|
# because otherwise a server will, probably, reply in a wrong way.
|
data/lib/ton_sdk_client/net.rb
CHANGED
@@ -135,7 +135,7 @@ module TonSdk
|
|
135
135
|
|
136
136
|
def to_h
|
137
137
|
h = super
|
138
|
-
h[:fields] =
|
138
|
+
h[:fields] = fields.map(&:to_h)
|
139
139
|
h
|
140
140
|
end
|
141
141
|
end
|
@@ -222,7 +222,7 @@ module TonSdk
|
|
222
222
|
|
223
223
|
def to_h
|
224
224
|
h = super
|
225
|
-
h[:abi_registry] =
|
225
|
+
h[:abi_registry] = abi_registry&.map(&:to_h)
|
226
226
|
h
|
227
227
|
end
|
228
228
|
end
|
@@ -409,8 +409,8 @@ module TonSdk
|
|
409
409
|
end
|
410
410
|
end
|
411
411
|
|
412
|
-
def self.get_endpoints(ctx
|
413
|
-
Interop::request_to_native_lib(ctx, "net.get_endpoints"
|
412
|
+
def self.get_endpoints(ctx)
|
413
|
+
Interop::request_to_native_lib(ctx, "net.get_endpoints") do |resp|
|
414
414
|
if resp.success?
|
415
415
|
yield NativeLibResponseResult.new(
|
416
416
|
result: ResultOfGetEndpoints.new(
|
@@ -16,9 +16,9 @@ module TonSdk
|
|
16
16
|
|
17
17
|
def to_h
|
18
18
|
{
|
19
|
-
message:
|
20
|
-
abi:
|
21
|
-
send_events:
|
19
|
+
message: message,
|
20
|
+
abi: abi&.to_h,
|
21
|
+
send_events: send_events
|
22
22
|
}
|
23
23
|
end
|
24
24
|
end
|
@@ -37,10 +37,10 @@ module TonSdk
|
|
37
37
|
|
38
38
|
def to_h
|
39
39
|
{
|
40
|
-
abi:
|
41
|
-
message:
|
42
|
-
shard_block_id:
|
43
|
-
send_events:
|
40
|
+
abi: abi&.to_h,
|
41
|
+
message: message,
|
42
|
+
shard_block_id: shard_block_id,
|
43
|
+
send_events: send_events
|
44
44
|
}
|
45
45
|
end
|
46
46
|
end
|
@@ -57,10 +57,10 @@ module TonSdk
|
|
57
57
|
|
58
58
|
def to_h
|
59
59
|
{
|
60
|
-
transaction:
|
61
|
-
out_messages:
|
62
|
-
decoded:
|
63
|
-
fees:
|
60
|
+
transaction: transaction,
|
61
|
+
out_messages: out_messages,
|
62
|
+
decoded: decoded,
|
63
|
+
fees: fees
|
64
64
|
}
|
65
65
|
end
|
66
66
|
end
|
@@ -136,6 +136,10 @@ module TonSdk
|
|
136
136
|
end
|
137
137
|
|
138
138
|
ParamsOfProcessMessage = KwStruct.new(:message_encode_params, :send_events) do
|
139
|
+
def initialize(message_encode_params:, send_events:)
|
140
|
+
super
|
141
|
+
end
|
142
|
+
|
139
143
|
def to_h
|
140
144
|
{
|
141
145
|
message_encode_params: message_encode_params.to_h,
|
@@ -188,8 +192,11 @@ module TonSdk
|
|
188
192
|
result: ResultOfProcessMessage.new(
|
189
193
|
transaction: resp.result["transaction"],
|
190
194
|
out_messages: resp.result["out_messages"],
|
191
|
-
decoded:
|
192
|
-
|
195
|
+
decoded: DecodedOutput.new(
|
196
|
+
out_messages: resp.result.dig("decoded", "out_messages"),
|
197
|
+
output: resp.result.dig("decoded", "output")
|
198
|
+
),
|
199
|
+
fees: Tvm::TransactionFees.new(**resp.result["fees"].transform_keys(&:to_sym))
|
193
200
|
)
|
194
201
|
)
|
195
202
|
else
|
@@ -215,8 +222,11 @@ module TonSdk
|
|
215
222
|
result: ResultOfProcessMessage.new(
|
216
223
|
transaction: resp.result["transaction"],
|
217
224
|
out_messages: resp.result["out_messages"],
|
218
|
-
decoded:
|
219
|
-
|
225
|
+
decoded: DecodedOutput.new(
|
226
|
+
out_messages: resp.result.dig("decoded", "out_messages"),
|
227
|
+
output: resp.result.dig("decoded", "output")
|
228
|
+
),
|
229
|
+
fees: Tvm::TransactionFees.new(**resp.result["fees"].transform_keys(&:to_sym))
|
220
230
|
)
|
221
231
|
)
|
222
232
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ton_sdk_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.28.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Maslakov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|