public static TransactionResultPair Decode(XdrDataInputStream stream) { var decodedTransactionResultPair = new TransactionResultPair(); decodedTransactionResultPair.TransactionHash = Hash.Decode(stream); decodedTransactionResultPair.Result = TransactionResult.Decode(stream); return(decodedTransactionResultPair); }
public static TransactionResultPair Decode(IByteReader stream) { TransactionResultPair decodedTransactionResultPair = new TransactionResultPair(); decodedTransactionResultPair.TransactionHash = Hash.Decode(stream); decodedTransactionResultPair.Result = TransactionResult.Decode(stream); return(decodedTransactionResultPair); }
/// <summary> /// Helper method that returns Offer ID for ManageOffer from TransactionResult Xdr. /// This is helpful when you need ID of an offer to update it later. /// </summary> /// <param name="position"> /// Position of ManageOffer operation. If ManageOffer is second operation in this transaction this /// should be equal <code>1</code>. /// </param> /// <returns> /// Offer ID or <code>null</code> when operation at <code>position</code> is not a ManageOffer operation or error /// has occurred. /// </returns> public long?GetOfferIdFromResult(int position) { if (!IsSuccess()) { return(null); } byte[] bytes = Convert.FromBase64String(ResultXdr); XdrDataInputStream xdrInputStream = new XdrDataInputStream(bytes); TransactionResult result; try { result = TransactionResult.Decode(xdrInputStream); } catch (Exception) { return(null); } if (result.Result.Results[position] == null) { return(null); } if (result.Result.Results[position].Tr.Discriminant.InnerValue != OperationType.OperationTypeEnum.MANAGE_OFFER) { return(null); } if (result.Result.Results[0].Tr.ManageOfferResult.Success.Offer.Offer == null) { return(null); } return(result.Result.Results[0].Tr.ManageOfferResult.Success.Offer.Offer.OfferID.InnerValue); }