Exemplo n.º 1
0
        /// <summary>
        /// The ripple_path_find method is a simplified version of the path_find method that provides a single response with a payment path you can use right away.
        /// It is available in both the WebSocket and JSON-RPC APIs. However, the results tend to become outdated as time passes.
        /// Instead of making multiple calls to stay updated, you should instead use the path_find method to subscribe to continued updates where possible.
        /// </summary>
        public async Task <RipplePathFindResponse> RipplePathFind(RipplePathFindRequest request, CancellationToken cancellationToken = default)
        {
            jsonBuffer.Clear();
            jsonWriter.Reset();
            jsonWriter.WriteStartObject();
            var requestId = WriteHeader(jsonWriter, "ripple_path_find");

            LedgerSpecification.Write(jsonWriter, request.Ledger);
            jsonWriter.WriteString("source_account", request.SourceAccount.ToString());
            jsonWriter.WriteString("destination_account", request.DestinationAccount.ToString());
            jsonWriter.WritePropertyName("destination_amount");
            request.DestinationAmount.WriteJson(jsonWriter);
            if (request.SendMax.HasValue)
            {
                jsonWriter.WritePropertyName("send_max");
                request.SendMax.Value.WriteJson(jsonWriter);
            }
            if (request.SourceCurrencies != null)
            {
                jsonWriter.WriteStartArray("source_currencies");
                foreach (var entry in request.SourceCurrencies)
                {
                    entry.WriteJson(jsonWriter);
                }
                jsonWriter.WriteEndArray();
            }
            WriteFooter(jsonWriter);
            jsonWriter.WriteEndObject();
            jsonWriter.Flush();
            var response = await SendReceiveAsync(requestId, jsonBuffer.WrittenMemory, cancellationToken);

            return(new RipplePathFindResponse(response));
        }
Exemplo n.º 2
0
        public void RipplePathFind()
        {
            // Arrange
            var request = new RipplePathFindRequest();

            request.Params.Add(new RipplePathFindRequestParams
            {
                SourceAccount    = "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
                SourceCurrencies = new List <CurrencyIssuer> {
                    new CurrencyIssuer {
                        Currency = "USD"
                    }
                },
                DestinationAccount = "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
                DestinationAmount  = new CurrencyIssuerValue
                {
                    Currency = "USD",
                    Value    = 0.01f,
                    Issuer   = "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX"
                }
            });

            // Act
            var response =
                _client.Transactions.RipplePathFindAsync(request).Result;

            // Assert
            Assert.AreEqual(Status.Success, response.Result.Status);
        }
Exemplo n.º 3
0
 public async Task <RpcJsonResponse <RipplePathFindResult> > RipplePathFindAsync(RipplePathFindRequest request)
 {
     return(await PostAsync <RpcJsonResponse <RipplePathFindResult>, RipplePathFindResult>(request));
 }