public static TransactionResultPair Decode(XdrDataInputStream stream)
        {
            var decodedTransactionResultPair = new TransactionResultPair();

            decodedTransactionResultPair.TransactionHash = Hash.Decode(stream);
            decodedTransactionResultPair.Result          = TransactionResult.Decode(stream);
            return(decodedTransactionResultPair);
        }
Exemplo n.º 2
0
        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);
        }