lib/stellar/asset.rb in stellar-base-0.1.2 vs lib/stellar/asset.rb in stellar-base-0.1.3

- old
+ new

@@ -4,35 +4,66 @@ new(:asset_type_native) end def self.alphanum4(code, issuer) raise ArgumentError, "Bad :issuer" unless issuer.is_a?(KeyPair) - code = normalize_code(code) + code = normalize_code(code, 4) an = AlphaNum4.new({asset_code:code, issuer:issuer.account_id}) new(:asset_type_credit_alphanum4, an) end + def self.alphanum12(code, issuer) + raise ArgumentError, "Bad :issuer" unless issuer.is_a?(KeyPair) + code = normalize_code(code, 12) + an = AlphaNum12.new({asset_code:code, issuer:issuer.account_id}) + new(:asset_type_credit_alphanum12, an) + end + def to_s - if switch == AssetType.asset_type_native + case switch + when AssetType.asset_type_native "native" - else - issuer_address = Stellar::Util::StrKey.check_encode(:account_id,alpha_num.issuer) - "#{alpha_num.asset_code}/#{issuer_address}" + when AssetType.asset_type_credit_alphanum4 + anum = alpha_num4! + issuer_address = Stellar::Convert.pk_to_address(anum.issuer) + "#{anum.asset_code}/#{issuer_address}" + when AssetType.asset_type_credit_alphanum12 + anum = alpha_num12! + issuer_address = Stellar::Convert.pk_to_address(anum.issuer) + "#{anum.asset_code}/#{issuer_address}" end end def inspect label = switch.to_s "#<Stellar::Asset #{to_s}>" end def code - self.alpha_num!.asset_code + case switch + when AssetType.asset_type_credit_alphanum4 + alpha_num4!.asset_code + when AssetType.asset_type_credit_alphanum12 + alpha_num12!.asset_code + else + raise "#{switch} assets do not have a code" + end end + + def issuer + case switch + when AssetType.asset_type_credit_alphanum4 + alpha_num4!.issuer + when AssetType.asset_type_credit_alphanum12 + alpha_num12!.issuer + else + raise "#{switch} assets do not have a isuuer" + end + end - def self.normalize_code(code) - raise ArgumentError, "Invalid asset code: #{code}, must be <= 4 bytes" if code.length > 4 + def self.normalize_code(code, length) + raise ArgumentError, "Invalid asset code: #{code}, must be <= #{length} bytes" if code.length > length - code.ljust(4, "\x00") + code.ljust(length, "\x00") end end end