Class: MixinBot::InvoiceEntry

Inherits:
Object
  • Object
show all
Defined in:
lib/mixin_bot/invoice.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ InvoiceEntry

Returns a new instance of InvoiceEntry.



130
131
132
133
134
135
136
137
138
139
# File 'lib/mixin_bot/invoice.rb', line 130

def initialize(**args)
  args = args.with_indifferent_access

  @trace_id = args[:trace_id]
  @asset_id = args[:asset_id]
  @amount = args[:amount].to_d
  @extra = args[:extra]
  @index_references = args[:index_references]
  @hash_references = args[:hash_references]
end

Instance Attribute Details

#amountObject

Returns the value of attribute amount.



128
129
130
# File 'lib/mixin_bot/invoice.rb', line 128

def amount
  @amount
end

#asset_idObject

Returns the value of attribute asset_id.



128
129
130
# File 'lib/mixin_bot/invoice.rb', line 128

def asset_id
  @asset_id
end

#extraObject

Returns the value of attribute extra.



128
129
130
# File 'lib/mixin_bot/invoice.rb', line 128

def extra
  @extra
end

#hash_referencesObject

Returns the value of attribute hash_references.



128
129
130
# File 'lib/mixin_bot/invoice.rb', line 128

def hash_references
  @hash_references
end

#index_referencesObject

Returns the value of attribute index_references.



128
129
130
# File 'lib/mixin_bot/invoice.rb', line 128

def index_references
  @index_references
end

#trace_idObject

Returns the value of attribute trace_id.



128
129
130
# File 'lib/mixin_bot/invoice.rb', line 128

def trace_id
  @trace_id
end

Instance Method Details

#encodeObject



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/mixin_bot/invoice.rb', line 141

def encode
  bytes = []

  bytes += MixinBot::UUID.new(hex: trace_id).packed.bytes
  bytes += MixinBot::UUID.new(hex: asset_id).packed.bytes

  amount_string = amount.to_d.to_s('F')
  amount_bytes = amount_string.bytes
  bytes += MixinBot.utils.encode_int(amount_bytes.size)
  bytes += amount_bytes

  extra_bytes = extra.bytes
  bytes += MixinBot.utils.encode_uint16(extra_bytes.size)
  bytes += extra_bytes

  references_count = (index_references || []).size + (hash_references || []).size
  bytes += MixinBot.utils.encode_int(references_count)

  index_references&.each do |index|
    bytes += MixinBot.utils.encode_int(1)
    bytes += MixinBot.utils.encode_int(index)
  end

  hash_references&.each do |hash|
    bytes += MixinBot.utils.encode_int(0)
    bytes += [hash].pack('H*').bytes
  end

  bytes
end

#to_hashObject



172
173
174
175
176
177
178
179
180
181
# File 'lib/mixin_bot/invoice.rb', line 172

def to_hash
  {
    trace_id:,
    asset_id:,
    amount:,
    extra:,
    index_references:,
    hash_references:
  }
end