示例#1
0
        /// <summary>
        /// The gateway_balances command calculates the total balances issued by a given account, optionally excluding amounts held by operational addresses.
        /// New in: rippled 0.28.2
        /// </summary>
        public async Task <GatewayBalancesResponse> GatewayBalances(GatewayBalancesRequest request, CancellationToken cancellationToken = default)
        {
            jsonBuffer.Clear();
            jsonWriter.Reset();
            jsonWriter.WriteStartObject();
            var requestId = WriteHeader(jsonWriter, "gateway_balances");

            LedgerSpecification.Write(jsonWriter, request.Ledger);
            jsonWriter.WriteString("account", request.Account.ToString());
            if (request.HotWallet != null)
            {
                if (request.HotWallet.Length == 1)
                {
                    jsonWriter.WriteString("hotwallet", request.HotWallet[0].ToString());
                }
                else
                {
                    jsonWriter.WriteStartArray("hotwallet");
                    foreach (var account in request.HotWallet)
                    {
                        jsonWriter.WriteStringValue(account.ToString());
                    }
                    jsonWriter.WriteEndArray();
                }
            }
            WriteFooter(jsonWriter);
            jsonWriter.WriteEndObject();
            jsonWriter.Flush();
            var response = await SendReceiveAsync(requestId, jsonBuffer.WrittenMemory, cancellationToken);

            return(new GatewayBalancesResponse(response));
        }
示例#2
0
        public Task <GatewayBalances> GatewayBalances(GatewayBalancesRequest request)
        {
            var command = JsonConvert.SerializeObject(request, serializerSettings);
            TaskCompletionSource <GatewayBalances> task = new TaskCompletionSource <GatewayBalances>();

            TaskInfo taskInfo = new TaskInfo();

            taskInfo.TaskId = request.Id;
            taskInfo.TaskCompletionResult = task;
            taskInfo.Type = typeof(GatewayBalances);

            tasks.TryAdd(request.Id, taskInfo);

            client.SendMessage(command);
            return(task.Task);
        }
示例#3
0
        public void GatewayBalances()
        {
            // Arrange
            var request = new GatewayBalancesRequest();

            request.Params.Add(new GatewayBalancesRequestParams()
            {
                Account     = "rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q",
                LedgerIndex = LedgerIndex.Validated.ToLower(),
                Strict      = true,
                HotWallet   = new List <string>
                {
                    "ra7JkEzrgeKHdzKgo4EUUVBnxggY4z37kt",
                    "rKm4uWpg9tfwbVSeATv4KxDe6mpE9yPkgJ"
                }
            });

            // Act
            var response =
                _client.AccountInformation.GatewayBalancesAsync(request).Result;

            // Assert
            Assert.AreEqual(Status.Success, response.Result.Status);
        }
示例#4
0
        public Task <GatewayBalances> GatewayBalances(string account)
        {
            GatewayBalancesRequest request = new GatewayBalancesRequest(account);

            return(GatewayBalances(request));
        }
 public async Task <RpcJsonResponse <GatewayBalancesResult> > GatewayBalancesAsync(GatewayBalancesRequest request)
 {
     return(await PostAsync <RpcJsonResponse <GatewayBalancesResult>, GatewayBalancesResult>(request));
 }