class Nis::Request::Announce

@attr [String] data @attr [String] signature @see nemproject.github.io/#requestAnnounce

Constants

DEADLINE

Attributes

data[RW]
keypair[RW]
signature[RW]
transaction[RW]

Public Class Methods

new(transaction, keypair) click to toggle source
# File lib/nis/request/announce.rb, line 12
def initialize(transaction, keypair)
  @keypair = keypair
  @transaction = transaction
end

Public Instance Methods

to_hash() click to toggle source

@return [Hash] Attribute and value pairs

# File lib/nis/request/announce.rb, line 18
def to_hash
  entity = @transaction.clone

  entity.amount *= 1_000_000 if entity.respond_to?(:amount)

  if entity.respond_to?(:other_trans)
    other_trans(entity)
  end

  entity.tap do |tx|
    tx.timeStamp = Nis::Util.timestamp
    tx.deadline = Nis::Util.deadline(DEADLINE)
    tx.version = Nis::Util.parse_version(tx.network, version(tx))
    tx.signer = @keypair.public
  end

  entity_hash = entity.to_hash
  if entity.respond_to?(:has_mosaics?) && !entity.has_mosaics?
    entity_hash.delete(:mosaics)
  end

  if entity.respond_to?(:other_trans) && !entity.other_trans.has_mosaics?
    entity_hash[:otherTrans].delete(:mosaics)
  end

  serialized = serialize(entity_hash)
  hex_serialized = Nis::Util::Convert.ua2hex(serialized)

  { data: Nis::Util::Convert.ua2hex(serialized),
    signature: signature(hex_serialized) }
end

Private Instance Methods

other_trans(transaction) click to toggle source
# File lib/nis/request/announce.rb, line 60
def other_trans(transaction)
  transaction.other_trans.tap do |tx|
    tx.amount *= 1_000_000 if tx.respond_to?(:amount)

    tx.timeStamp = Nis::Util.timestamp
    tx.deadline = Nis::Util.deadline(DEADLINE)
    tx.version = Nis::Util.parse_version(tx.network, version(tx))
    tx.signer = transaction.signer
  end
end
serialize(transaction_hash) click to toggle source
# File lib/nis/request/announce.rb, line 52
def serialize(transaction_hash)
  Nis::Util::Serializer.serialize_transaction(transaction_hash)
end
version(transaction) click to toggle source
# File lib/nis/request/announce.rb, line 71
def version(transaction)
  transaction.respond_to?(:has_mosaics?) && transaction.has_mosaics? ? 2 : 1
end