Esempio n. 1
0
        public DepositHistory GetDepositHistory(string asset, DepositStatus?status = null, DateTime?startTime = null, DateTime?endTime = null, long recvWindow = 5000)
        {
            if (m_BinanceClient == null)
            {
                return(null);
            }
            var depositHistory = m_BinanceClient.GetDepositHistory(asset, status, startTime, endTime, recvWindow).Result;

            return(depositHistory);
        }
Esempio n. 2
0
        /// <summary>
        /// Gets a list of deposits based on the specified parameters.
        /// </summary>
        /// <param name="currency">The trading currency (XBT or USDT).</param>
        /// <param name="status">Deposit status</param>
        /// <param name="startTime">Start time</param>
        /// <param name="endTime">End time</param>
        /// <returns></returns>
        public async Task <IList <Deposit> > GetDepositsList(
            string currency      = null,
            DepositStatus?status = null,
            DateTime?startTime   = null,
            DateTime?endTime     = null)
        {
            var param = new Dictionary <string, object>();

            long     st, et;
            DateTime d;

            if (currency != null)
            {
                param.Add("currency", currency);
            }

            if (status != null)
            {
                param.Add("status", status);
            }

            if (startTime == null)
            {
                st = 0;
            }
            else
            {
                d  = (DateTime)startTime;
                st = EpochTime.DateToMilliseconds(d);
                param.Add("startAt", st);
            }

            if (endTime == null)
            {
                et = 0;
            }
            else
            {
                d  = (DateTime)endTime;
                et = EpochTime.DateToMilliseconds(d);
                param.Add("endAt", et);
            }

            if (startTime != null && endTime != null && et < st)
            {
                throw new ArgumentException("End time must be greater than start time");
            }

            var url = "/api/v1/deposit-list";

            return(await GetAllPaginatedResults <Deposit, DepositList>(HttpMethod.Get, url, reqParams : param));
        }
Esempio n. 3
0
        /// <summary>
        /// Fetch deposit history.
        /// </summary>
        /// <param name="asset">Asset you want to see the information for.</param>
        /// <param name="status">Deposit status.</param>
        /// <param name="startTime">Start time. </param>
        /// <param name="endTime">End time.</param>
        /// <param name="recvWindow">Specific number of milliseconds the request is valid for.</param>
        /// <returns></returns>
        public async Task <DepositHistory> GetDepositHistory(string asset, DepositStatus?status = null, DateTime?startTime = null, DateTime?endTime = null, long recvWindow = 5000)
        {
            if (string.IsNullOrWhiteSpace(asset))
            {
                throw new ArgumentException("asset cannot be empty. ", "asset");
            }

            var args = $"asset={asset.ToUpper()}"
                       + (status.HasValue ? $"&status={(int)status}" : "")
                       + (startTime.HasValue ? $"&startTime={startTime.Value.GetUnixTimeStamp()}" : "")
                       + (endTime.HasValue ? $"&endTime={endTime.Value.GetUnixTimeStamp()}" : "")
                       + $"&recvWindow={recvWindow}";

            var result = await _apiClient.CallAsync <DepositHistory>(ApiMethod.POST, EndPoints.DepositHistory, true, args).ConfigureAwait(false);

            return(result);
        }
Esempio n. 4
0
 /// <summary>
 /// Gets the deposit history
 /// </summary>
 /// <param name="coin">Filter by asset</param>
 /// <param name="status">Filter by status</param>
 /// <param name="limit">Amount of results</param>
 /// <param name="offset">Offset the results</param>
 /// <param name="startTime">Filter start time from</param>
 /// <param name="endTime">Filter end time till</param>
 /// <param name="receiveWindow">The receive window for which this request is active. When the request takes longer than this to complete the server will reject the request</param>
 /// <param name="ct">Cancellation token</param>
 /// <returns>List of deposits</returns>
 public WebCallResult <IEnumerable <BinanceDeposit> > GetDepositHistory(string?coin = null, DepositStatus?status = null, DateTime?startTime = null, DateTime?endTime = null, int?offset = null, int?limit = null, int?receiveWindow = null, CancellationToken ct = default) => GetDepositHistoryAsync(coin, status, startTime, endTime, offset, limit, receiveWindow, ct).Result;
        /// <summary>
        /// Get the deposit history.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="user"></param>
        /// <param name="asset"></param>
        /// <param name="status"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <param name="recvWindow"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <string> GetDepositsAsync(this IBinanceHttpClient client, IBinanceApiUser user, string asset = null, DepositStatus?status = null, long startTime = default, long endTime = default, long recvWindow = default, CancellationToken token = default)
        {
            Throw.IfNull(client, nameof(client));
            Throw.IfNull(user, nameof(user));

            if (recvWindow <= 0)
            {
                recvWindow = client.Options.RecvWindowDefault ?? 0;
            }

            var request = new BinanceHttpRequest("/wapi/v3/depositHistory.html")
            {
                ApiKey = user.ApiKey
            };

            if (!string.IsNullOrWhiteSpace(asset))
            {
                request.AddParameter("asset", asset.FormatSymbol());
            }

            if (status.HasValue)
            {
                request.AddParameter("status", (int)status);
            }

            if (startTime > 0)
            {
                request.AddParameter("startTime", startTime);
            }

            if (endTime > 0)
            {
                request.AddParameter("endTime", endTime);
            }

            if (recvWindow > 0)
            {
                request.AddParameter("recvWindow", recvWindow);
            }

            await client.SignAsync(request, user, token)
            .ConfigureAwait(false);

            return(await client.GetAsync(request, token)
                   .ConfigureAwait(false));
        }
        /// <summary>
        /// Get the deposit history.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="user"></param>
        /// <param name="asset"></param>
        /// <param name="status"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <param name="recvWindow"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <string> GetDepositsAsync(this IBinanceHttpClient client, IBinanceApiUser user, string asset = null, DepositStatus?status = null, DateTime startTime = default, DateTime endTime = default, long recvWindow = default, CancellationToken token = default)
        {
            Throw.IfNull(client, nameof(client));
            Throw.IfNull(user, nameof(user));

            if (recvWindow == default)
            {
                recvWindow = client.DefaultRecvWindow;
            }

            if (client.RateLimiter != null)
            {
                await client.RateLimiter.DelayAsync(token : token)
                .ConfigureAwait(false);
            }

            var request = new BinanceHttpRequest("/wapi/v3/depositHistory.html")
            {
                ApiKey = user.ApiKey
            };

            if (!string.IsNullOrWhiteSpace(asset))
            {
                request.AddParameter("asset", asset.FormatSymbol());
            }

            if (status.HasValue)
            {
                request.AddParameter("status", (int)status);
            }

            if (startTime != default)
            {
                if (startTime.Kind != DateTimeKind.Utc)
                {
                    throw new ArgumentException("Date/Time must be UTC.", nameof(startTime));
                }

                request.AddParameter("startTime", startTime.ToTimestamp());
            }

            if (endTime != default)
            {
                if (endTime.Kind != DateTimeKind.Utc)
                {
                    throw new ArgumentException("Date/Time must be UTC.", nameof(endTime));
                }

                request.AddParameter("endTime", endTime.ToTimestamp());
            }

            if (recvWindow > 0)
            {
                request.AddParameter("recvWindow", recvWindow);
            }

            await client.SignAsync(request, user, token)
            .ConfigureAwait(false);

            return(await client.GetAsync(request, token)
                   .ConfigureAwait(false));
        }
Esempio n. 7
0
        /// <summary>
        /// Get historic deposit history (KuCoin v1)
        /// </summary>
        /// <param name="symbol">Symbol of currency</param>
        /// <param name="startDate">Start date</param>
        /// <param name="endDate">End date</param>
        /// <param name="status">Deposit status</param>
        /// <param name="page">Page number</param>
        /// <param name="pageSize">Page size</param>
        /// <returns>Paged collection of Deposits</returns>
        public static async Task <PagedResponse <List <Deposit> > > GetHistoricDeposits(this IKuCoinDotNet service, string symbol = null, DateTime?startDate = null, DateTime?endDate = null, DepositStatus?status = null, int page = 0, int pageSize = 0)
        {
            var _dtHelper = new DateTimeHelper();
            var startAt   = startDate != null?_dtHelper.LocalToUnixTime((DateTime)startDate) : 0;

            var endAt = endDate != null?_dtHelper.LocalToUnixTime((DateTime)endDate) : 0;

            return(await service.GetHistoricDeposits(symbol, startAt, endAt, status, page, pageSize));
        }
Esempio n. 8
0
        /// <summary>
        /// Gets the deposit history
        /// </summary>
        /// <param name="asset">Filter by asset</param>
        /// <param name="status">Filter by status</param>
        /// <param name="startTime">Filter start time from</param>
        /// <param name="endTime">Filter end time till</param>
        /// <param name="recvWindow">The receive window for which this request is active. When the request takes longer than this to complete the server will reject the request</param>
        /// <returns>List of deposits</returns>
        public async Task <BinanceApiResult <BinanceDepositList> > GetDepositHistoryAsync(string asset = null, DepositStatus?status = null, DateTime?startTime = null, DateTime?endTime = null, long?recvWindow = null)
        {
            if (key == null || encryptor == null)
            {
                return(ThrowErrorMessage <BinanceDepositList>(BinanceErrors.GetError(BinanceErrorKey.NoApiCredentialsProvided)));
            }

            if (AutoTimestamp && !timeSynced)
            {
                await GetServerTimeAsync();
            }

            var parameters = new Dictionary <string, string>()
            {
                { "timestamp", GetTimestamp() }
            };

            AddOptionalParameter(parameters, "asset", asset);
            AddOptionalParameter(parameters, "status", status != null ? JsonConvert.SerializeObject(status, new DepositStatusConverter(false)): null);
            AddOptionalParameter(parameters, "startTime", startTime != null ? ToUnixTimestamp(startTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            AddOptionalParameter(parameters, "endTime", endTime != null ? ToUnixTimestamp(endTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            AddOptionalParameter(parameters, "recvWindow", recvWindow?.ToString());

            var result = await ExecuteRequest <BinanceDepositList>(GetUrl(DepositHistoryEndpoint, WithdrawalApi, WithdrawalVersion, parameters), true, PostMethod);

            if (!result.Success || result.Data == null)
            {
                return(result);
            }

            result.Success = result.Data.Success;
            if (!result.Success)
            {
                result.Error = new BinanceError()
                {
                    Message = result.Data.Message
                }
            }
            ;
            return(result);
        }
Esempio n. 9
0
 /// <summary>
 /// Synchronized version of the <see cref="GetDepositHistoryAsync"/> method
 /// </summary>
 /// <returns></returns>
 public BinanceApiResult <BinanceDepositList> GetDepositHistory(string asset = null, DepositStatus?status = null, DateTime?startTime = null, DateTime?endTime = null, long?recvWindow = null) => GetDepositHistoryAsync(asset, status, startTime, endTime, recvWindow).Result;
Esempio n. 10
0
 public Task <CallResult <BinanceDepositList> > GetDepositHistoryAsync(string asset     = null, DepositStatus?status = null, DateTime?startTime = null,
                                                                       DateTime?endTime = null, int?receiveWindow    = null) => throw new NotImplementedException();
Esempio n. 11
0
        /// <summary>
        /// Gets list of closed deposits
        /// </summary>
        /// <param name="currency">Filter the list by currency</param>
        /// <param name="status">Filter the list by status of the deposit</param>
        /// <param name="startDate">Filter the list by date</param>
        /// <param name="endDate">Filter the list by date</param>
        /// <param name="pageSize">The max amount of results to return</param>
        /// <param name="nextPageToken">The id of the object after which to return results. Typically the last deposit id of the previous page</param>
        /// <param name="previousPageToken">The id of the object before which to return results. Typically the first deposit id of the next page</param>
        /// <returns>List of deposits</returns>
        public async Task <WebCallResult <BittrexDepositV3[]> > GetClosedDepositsAsync(string currency = null, DepositStatus?status = null, DateTime?startDate = null, DateTime?endDate = null, int?pageSize = null, string nextPageToken = null, string previousPageToken = null)
        {
            if (nextPageToken != null && previousPageToken != null)
            {
                return(WebCallResult <BittrexDepositV3[]> .CreateErrorResult(new ArgumentError("Can't specify startDate and endData simultaneously")));
            }

            if (pageSize < 1 || pageSize > 200)
            {
                return(WebCallResult <BittrexDepositV3[]> .CreateErrorResult(new ArgumentError("Page size should be between 1 and 200")));
            }

            var parameters = new Dictionary <string, object>();

            parameters.AddOptionalParameter("currencySymbol", currency);
            parameters.AddOptionalParameter("status", status.HasValue ? JsonConvert.SerializeObject(status, new DepositStatusConverter(false)): null);
            parameters.AddOptionalParameter("startDate", startDate?.ToString("yyyy-MM-ddTHH:mm:ssZ"));
            parameters.AddOptionalParameter("endDate", endDate?.ToString("yyyy-MM-ddTHH:mm:ssZ"));
            parameters.AddOptionalParameter("pageSize", pageSize);
            parameters.AddOptionalParameter("nextPageToken", nextPageToken);
            parameters.AddOptionalParameter("previousPageToken", previousPageToken);

            return(await ExecuteRequest <BittrexDepositV3[]>(GetUrl("deposits/closed"), parameters : parameters, signed : true).ConfigureAwait(false));
        }
Esempio n. 12
0
 /// <summary>
 /// Gets list of closed deposits
 /// </summary>
 /// <param name="currency">Filter the list by currency</param>
 /// <param name="status">Filter the list by status of the deposit</param>
 /// <param name="startDate">Filter the list by date</param>
 /// <param name="endDate">Filter the list by date</param>
 /// <param name="pageSize">The max amount of results to return</param>
 /// <param name="nextPageToken">The id of the object after which to return results. Typically the last deposit id of the previous page</param>
 /// <param name="previousPageToken">The id of the object before which to return results. Typically the first deposit id of the next page</param>
 /// <returns>List of deposits</returns>
 public WebCallResult <BittrexDepositV3[]> GetClosedDeposits(string currency = null, DepositStatus?status = null, DateTime?startDate = null, DateTime?endDate = null, int?pageSize = null, string nextPageToken = null, string previousPageToken = null) => GetClosedDepositsAsync(currency, status, startDate, endDate, pageSize, nextPageToken, previousPageToken).Result;
Esempio n. 13
0
        /// <summary>
        /// Gets list of closed deposits
        /// </summary>
        /// <param name="currency">Filter the list by currency</param>
        /// <param name="status">Filter the list by status of the deposit</param>
        /// <param name="startDate">Filter the list by date</param>
        /// <param name="endDate">Filter the list by date</param>
        /// <param name="pageSize">The max amount of results to return</param>
        /// <param name="nextPageToken">The id of the object after which to return results. Typically the last deposit id of the previous page</param>
        /// <param name="previousPageToken">The id of the object before which to return results. Typically the first deposit id of the next page</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>List of deposits</returns>
        public async Task <WebCallResult <IEnumerable <BittrexDepositV3> > > GetClosedDepositsAsync(string?currency = null, DepositStatus?status = null, DateTime?startDate = null, DateTime?endDate = null, int?pageSize = null, string?nextPageToken = null, string?previousPageToken = null, CancellationToken ct = default)
        {
            if (nextPageToken != null && previousPageToken != null)
            {
                throw new ArgumentException("Can't specify startDate and endData simultaneously");
            }

            pageSize?.ValidateIntBetween("pageSize", 25, 100);

            var parameters = new Dictionary <string, object>();

            parameters.AddOptionalParameter("currencySymbol", currency);
            parameters.AddOptionalParameter("status", status.HasValue ? JsonConvert.SerializeObject(status, new DepositStatusConverter(false)): null);
            parameters.AddOptionalParameter("startDate", startDate?.ToString("yyyy-MM-ddTHH:mm:ssZ"));
            parameters.AddOptionalParameter("endDate", endDate?.ToString("yyyy-MM-ddTHH:mm:ssZ"));
            parameters.AddOptionalParameter("pageSize", pageSize);
            parameters.AddOptionalParameter("nextPageToken", nextPageToken);
            parameters.AddOptionalParameter("previousPageToken", previousPageToken);

            return(await SendRequest <IEnumerable <BittrexDepositV3> >(GetUrl("deposits/closed"), HttpMethod.Get, ct, parameters, true).ConfigureAwait(false));
        }
Esempio n. 14
0
 /// <summary>
 /// Gets list of closed deposits
 /// </summary>
 /// <param name="currency">Filter the list by currency</param>
 /// <param name="status">Filter the list by status of the deposit</param>
 /// <param name="startDate">Filter the list by date</param>
 /// <param name="endDate">Filter the list by date</param>
 /// <param name="pageSize">The max amount of results to return</param>
 /// <param name="nextPageToken">The id of the object after which to return results. Typically the last deposit id of the previous page</param>
 /// <param name="previousPageToken">The id of the object before which to return results. Typically the first deposit id of the next page</param>
 /// <param name="ct">Cancellation token</param>
 /// <returns>List of deposits</returns>
 public WebCallResult <IEnumerable <BittrexDepositV3> > GetClosedDeposits(string?currency = null, DepositStatus?status = null, DateTime?startDate = null, DateTime?endDate = null, int?pageSize = null, string?nextPageToken = null, string?previousPageToken = null, CancellationToken ct = default) =>
 GetClosedDepositsAsync(currency, status, startDate, endDate, pageSize, nextPageToken, previousPageToken, ct).Result;
Esempio n. 15
0
        /// <summary>
        /// Gets the deposit history
        /// </summary>
        /// <param name="coin">Filter by asset</param>
        /// <param name="status">Filter by status</param>
        /// <param name="limit">Amount of results</param>
        /// <param name="offset">Offset the results</param>
        /// <param name="startTime">Filter start time from</param>
        /// <param name="endTime">Filter end time till</param>
        /// <param name="receiveWindow">The receive window for which this request is active. When the request takes longer than this to complete the server will reject the request</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>List of deposits</returns>
        public async Task <WebCallResult <IEnumerable <BinanceDeposit> > > GetDepositHistoryAsync(string?coin = null, DepositStatus?status = null, DateTime?startTime = null, DateTime?endTime = null, int?offset = null, int?limit = null, int?receiveWindow = null, CancellationToken ct = default)
        {
            var timestampResult = await _baseClient.CheckAutoTimestamp(ct).ConfigureAwait(false);

            if (!timestampResult)
            {
                return(new WebCallResult <IEnumerable <BinanceDeposit> >(timestampResult.ResponseStatusCode, timestampResult.ResponseHeaders, null, timestampResult.Error));
            }

            var parameters = new Dictionary <string, object>
            {
                { "timestamp", _baseClient.GetTimestamp() }
            };

            parameters.AddOptionalParameter("coin", coin);
            parameters.AddOptionalParameter("offset", offset?.ToString(CultureInfo.InvariantCulture));
            parameters.AddOptionalParameter("limit", limit?.ToString(CultureInfo.InvariantCulture));
            parameters.AddOptionalParameter("status", status != null ? JsonConvert.SerializeObject(status, new DepositStatusConverter(false)) : null);
            parameters.AddOptionalParameter("startTime", startTime != null ? BinanceClient.ToUnixTimestamp(startTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            parameters.AddOptionalParameter("endTime", endTime != null ? BinanceClient.ToUnixTimestamp(endTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            parameters.AddOptionalParameter("recvWindow", receiveWindow?.ToString(CultureInfo.InvariantCulture) ?? _baseClient.DefaultReceiveWindow.TotalMilliseconds.ToString(CultureInfo.InvariantCulture));

            return(await _baseClient.SendRequestInternal <IEnumerable <BinanceDeposit> >(
                       _baseClient.GetUrlSpot(depositHistoryEndpoint, "sapi", "1"), HttpMethod.Get, ct, parameters, true)
                   .ConfigureAwait(false));
        }
Esempio n. 16
0
        public async Task <IList <DepositListItem> > GetDepositList(string currency = null, DateTime?startTime = null, DateTime?endTime = null, DepositStatus?status = null, int pageSize = 50)
        {
            var      l = new List <DepositListItem>();
            long     st, et;
            int      cp = 1;
            DateTime d;
            var      param = new Dictionary <string, object>();

            param.Add("pageSize", pageSize);
            param.Add("currentPage", cp);

            if (currency != null)
            {
                param.Add("currency", currency);
            }

            if (startTime == null)
            {
                st = 0;
            }
            else
            {
                d  = (DateTime)startTime;
                st = EpochTime.DateToSeconds(d);
                param.Add("startAt", st);
            }

            if (endTime == null)
            {
                et = 0;
            }
            else
            {
                d  = (DateTime)endTime;
                et = EpochTime.DateToSeconds(d);
                param.Add("endAt", et);
            }
            if (status != null)
            {
                param.Add("status", EnumToStringConverter <DepositStatus> .GetEnumName((DepositStatus)status));
            }


            if (startTime != null && endTime != null && et < st)
            {
                throw new ArgumentException("End time must be greater than start time");
            }

            return(await GetAllPaginatedResults <DepositListItem, DepositListPage>(HttpMethod.Get, $"/api/v1/deposits", reqParams : param));
        }
Esempio n. 17
0
        /// <summary>
        /// Get historic deposit history (KuCoin v1)
        /// </summary>
        /// <param name="symbol">Symbol of currency</param>
        /// <param name="startAt">Start date</param>
        /// <param name="endAt">End date</param>
        /// <param name="status">Deposit status</param>
        /// <param name="page">Page number</param>
        /// <param name="pageSize">Page size</param>
        /// <returns>Paged collection of Deposits</returns>
        public async Task <PagedResponse <List <Deposit> > > GetHistoricDeposits(string symbol = null, long startAt = 0, long endAt = 0, DepositStatus?status = null, int page = 0, int pageSize = 0)
        {
            var endpoint = $"/api/v1/hist-deposits";

            var parms = new Dictionary <string, object>();

            if (!string.IsNullOrEmpty(symbol))
            {
                parms.Add("currency", symbol);
            }
            if (startAt > 0)
            {
                parms.Add("startAt", startAt);
            }
            if (endAt > 0)
            {
                parms.Add("endAt", endAt);
            }
            if (status != null)
            {
                parms.Add("status", status.ToString());
            }
            if (page == 0)
            {
                page = 1;
            }
            parms.Add("currentPage", page);
            if (pageSize == 0)
            {
                pageSize = 100;
            }
            parms.Add("pageSize", pageSize);

            var queryString = parms.Count > 0 ? $"?{_helper.DictionaryToString(parms)}" : string.Empty;

            endpoint += queryString;

            return(await Get <PagedResponse <List <Deposit> > >(endpoint, true));
        }