package org.ripple.power.txns;
import org.json.JSONObject;
import org.ripple.power.RippleObject;
import org.ripple.power.RippleSeedAddress;
import org.ripple.power.RippleSchemas.BinaryFormatField;
import org.ripple.power.RippleSchemas.TransactionTypes;
import org.ripple.power.ui.RPClient;
import com.ripple.client.enums.Command;
import com.ripple.client.requests.Request;
import com.ripple.client.responses.Response;
public class RegularKey {
public static void set(final String seed, final IssuedCurrency currency,
final String fee, final Rollback back) {
TrustSet.set(new RippleSeedAddress(seed), currency, fee, back);
}
public static void set(final RippleSeedAddress seed,
final IssuedCurrency currency, final String fee, final Rollback back) {
final String address = seed.getPublicRippleAddress().toString();
AccountFind find = new AccountFind();
find.info(address, new Rollback() {
@Override
public void success(JSONObject message) {
try {
long sequence = TransactionUtils.getSequence(message);
RippleObject item = new RippleObject();
item.putField(BinaryFormatField.TransactionType,
(int) TransactionTypes.REGULAR_KEY_SET.byteValue);
item.putField(BinaryFormatField.Account,
seed.getPublicRippleAddress());
item.putField(BinaryFormatField.LimitAmount, currency);
item.putField(BinaryFormatField.Fee,
CurrencyUtils.getValueToRipple(fee));
item.putField(BinaryFormatField.Sequence, sequence);
TransactionUtils.submitBlob(seed, item, back);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void error(JSONObject message) {
if (back != null) {
back.error(message);
}
}
});
}
public static void setTxJson(final String seed, final String message,
final String fee, final Rollback back) {
RegularKey.setTxJson(new RippleSeedAddress(seed), message, fee, back);
}
public static void setTxJson(final RippleSeedAddress seed,
final String message, final String fee, final Rollback back) {
RPClient client = RPClient.ripple();
if (client != null) {
Request req = client.newRequest(Command.submit);
JSONObject obj = new JSONObject();
obj.put("TransactionType", "SetRegularKey");
obj.put("Account", seed.getPublicKey());
obj.put("RegularKey", message);
obj.put("Fee", CurrencyUtils.getValueToRipple(fee));
req.json("tx_json", obj);
req.json("secret", seed.getPrivateKey());
req.once(Request.OnSuccess.class, new Request.OnSuccess() {
@Override
public void called(Response response) {
if (back != null) {
back.success(response.message);
}
}
});
req.once(Request.OnError.class, new Request.OnError() {
@Override
public void called(Response response) {
if (back != null) {
back.error(response.message);
}
}
});
req.request();
}
}
}