Class: TonSdkRubySmc::MetaData
- Inherits:
-
Object
- Object
- TonSdkRubySmc::MetaData
show all
- Extended by:
- TonSdkRuby, TonSdkRubySmc
- Defined in:
- lib/ton-sdk-ruby-smc/tokens/metadata.rb
Constant Summary
PWV2_CODE, SUB_WALLET_ID, TOKEN_ATTRIBUTES_SHA256, VERSION, WALLET_V3_CODE, WALLET_V4_CODE
Class Method Summary
collapse
require_type
Class Method Details
78
79
80
81
82
83
84
85
|
# File 'lib/ton-sdk-ruby-smc/tokens/metadata.rb', line 78
def self.parse_off_chain_metadata(slice)
string = slice.load_string(slice.bits.size / 8)
while slice.refs.size > 0
slice = slice.load_ref.parse
string += slice.load_string(slice.bits.size / 8)
end
string
end
|
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/ton-sdk-ruby-smc/tokens/metadata.rb', line 48
def self.parse_on_chain_metadata(slice)
deserializers = {
key: -> (k) do
slice = Slice.parse(Builder.new.store_bits(k).cell)
just_value = slice.load_bytes(32)
bytes_to_hex(just_value)
end,
value: -> (v) do
v.parse.load_ref
end
}
result_vot_da = {}
dick = slice.load_dict(256, {deserializers: deserializers})
dick.each do |key, value|
TOKEN_ATTRIBUTES_SHA256.each do |name, hash|
if hash == key
cs = value.parse
da_content_tag = cs.load_uint(8)
if da_content_tag == 0x00
result_vot_da[name] = parse_off_chain_metadata(cs)
else
raise 'Chuncked data unsupported'
end
end
end
end
result_vot_da
end
|
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/ton-sdk-ruby-smc/tokens/metadata.rb', line 31
def self.parse_token_metadata(da_slice)
require_type('da_slice', da_slice, Slice)
pum_purum_tag = da_slice.load_uint(8)
result = {}
if pum_purum_tag == 0x01
result[:tag] = 'offchain'
result[:data] = parse_off_chain_metadata(da_slice)
result
else
result[:tag] = 'onchain'
result[:data] = parse_on_chain_metadata(da_slice)
result
end
end
|