71 lines
No EOL
2.4 KiB
Java
71 lines
No EOL
2.4 KiB
Java
package com.tangem.wallet.eos;
|
|
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Date;
|
|
import java.util.Locale;
|
|
import java.util.TimeZone;
|
|
|
|
import io.jafka.jeos.convert.Packer;
|
|
import io.jafka.jeos.core.common.transaction.TransactionAction;
|
|
import io.jafka.jeos.core.common.transaction.TransactionAuthorization;
|
|
import io.jafka.jeos.util.Raw;
|
|
import io.jafka.jeos.util.ecc.Hex;
|
|
|
|
public class EosPacker extends Packer {
|
|
public static Raw packPackedTransaction(String chainId, EosPackedTransaction t) {
|
|
Raw raw = new Raw();
|
|
//chain
|
|
raw.pack(Hex.toBytes(chainId));
|
|
//expiration
|
|
try {
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.5", Locale.US);
|
|
format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
Date date = format.parse(t.getExpiration());
|
|
raw.packUint32(date.getTime() / 1000);
|
|
} catch (ParseException e) {
|
|
e.printStackTrace();
|
|
}
|
|
//ref_block_num
|
|
raw.packUint16(t.getRefBlockNum().intValue());
|
|
//ref_block_prefix
|
|
raw.packUint32(t.getRefBlockPrefix());
|
|
//max_net_usage_words
|
|
raw.packVarint32(t.getMaxNetUsageWords());
|
|
//max_cpu_usage_ms
|
|
raw.packUint8(t.getMaxCpuUsageMs());//TODO: what the type?
|
|
//delay_sec
|
|
raw.packVarint32(t.getDelaySec());
|
|
//context_free_actions
|
|
raw.packVarint32(t.getContextFreeActions().size());
|
|
//TODO: getContextFreeActions
|
|
|
|
//actions
|
|
raw.packVarint32(t.getActions().size());
|
|
|
|
for (TransactionAction a : t.getActions()) {
|
|
//action.account
|
|
raw.packName(a.getAccount())//
|
|
.packName(a.getName())//
|
|
.packVarint32(a.getAuthorization().size())//
|
|
;
|
|
//action.authorization
|
|
for (TransactionAuthorization au : a.getAuthorization()) {
|
|
raw.packName(au.getActor())//
|
|
.packName(au.getPermission());
|
|
}
|
|
|
|
//action.data
|
|
byte[] dat = Hex.toBytes(a.getData());
|
|
raw.packVarint32(dat.length);
|
|
raw.pack(dat);
|
|
}
|
|
//transaction_extensions
|
|
//raw.packVarint32(t.getTransactionExtensions().size());
|
|
//TODO: getTransactionExtensions
|
|
|
|
//context_free_data
|
|
//raw.packVarint32(t.getContextFreeActions().size());
|
|
return raw;
|
|
}
|
|
} |