Exemple #1
0
        /// <summary>
        /// 전체 출금 조회
        /// </summary>
        /// <param name="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">You can set the maximum number of transactions you want to get with this parameter</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Transfers> FetchAllTransfersAsync(string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new Transfers();

            var _markets = await publicApi.LoadMarketsAsync();

            if (_markets.success == true)
            {
                privateClient.ExchangeInfo.ApiCallWait(TradeType.Private);

                var _timestamp = privateClient.ExchangeInfo.GetTimestamp(timeframe);
                var _timeframe = privateClient.ExchangeInfo.GetTimeframe(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("start", since / 1000);
                    //_params.Add("end", since);

                    privateClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await privateClient.CallApiPost1Async("/1/private/depositsWithdrawals", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <GTransfers>(_json_value.Content);
                    {
                        if (_json_data.success == true)
                        {
                            foreach (var _d in _json_data.deposits)
                            {
                                var _deposit = new GTransferItem
                                {
                                    currency      = _d.currency,
                                    fromAddress   = _d.fromAddress,
                                    amount        = _d.amount,
                                    transactionId = _d.transactionId,
                                    timestamp     = _d.timestamp,
                                    transferType  = _d.transferType
                                };

                                _deposit.transferId = _deposit.timestamp.ToString();                    // transferId 없음

                                _deposit.isCompleted     = _deposit.transferType == TransferType.Done;
                                _deposit.transactionType = _deposit.transferType == TransferType.Done ? TransactionType.Deposit : TransactionType.Depositing;

                                _result.result.Add(_deposit);
                            }

                            foreach (var _w in _json_data.withdraws)
                            {
                                var _withdraw = new GTransferItem
                                {
                                    currency      = _w.currency,
                                    toAddress     = _w.toAddress,
                                    amount        = _w.amount,
                                    transactionId = _w.transactionId,
                                    timestamp     = _w.timestamp,
                                    transferType  = _w.transferType
                                };

                                _withdraw.transferId = _withdraw.timestamp.ToString();                    // transferId 없음

                                _withdraw.isCompleted     = _withdraw.transferType == TransferType.Done;
                                _withdraw.transactionType = _withdraw.transferType == TransferType.Done ? TransactionType.Withdraw : TransactionType.Withdrawing;

                                _result.result.Add(_withdraw);
                            }
                        }

                        //_result.result = _result.result
                        //                    .Where(t => t.timestamp >= since)
                        //                    .OrderByDescending(t => t.timestamp)
                        //                    .Take(limits);
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Exemple #2
0
        /// <summary>
        /// 코인 출금
        /// </summary>
        /// <param name="currency_name">base coin or quote coin name</param>
        /// <param name="address">coin address for send</param>
        /// <param name="tag">Secondary address identifier for coins like XRP,XMR etc.</param>
        /// <param name="quantity">amount of coin</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Transfer> CoinWithdrawAsync(string currency_name, string address, string tag, decimal quantity, Dictionary <string, object> args = null)
        {
            var _result = new Transfer();

            var _currency_id = await publicApi.LoadCurrencyIdAsync(currency_name);

            if (_currency_id.success == true)
            {
                privateClient.ExchangeInfo.ApiCallWait(TradeType.Private);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("amount", quantity);
                    _params.Add("currency", _currency_id.result);
                    _params.Add("address", address);

                    privateClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await privateClient.CallApiPost1Async("/1/private/withdraw", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <JObject>(_json_value.Content);
                    {
                        var _withdraw = new GTransferItem();
                        if (_json_data["result"].Value <bool>() == true)
                        {
                            _withdraw.timestamp     = CUnixTime.NowMilli;
                            _withdraw.transferId    = _withdraw.timestamp.ToString();               // transferId 없음
                            _withdraw.transactionId = (_withdraw.timestamp * 1000).ToString();      // transactionId 없음

                            _withdraw.transactionType = TransactionType.Withdrawing;

                            _withdraw.currency  = _currency_id.result;
                            _withdraw.toAddress = address;
                            _withdraw.toTag     = tag;

                            _withdraw.amount = quantity;
                            //_withdraw.fee = _json_data.fee;

                            _withdraw.confirmations = 0;
                            _withdraw.isCompleted   = false;
                        }

                        _result.result = _withdraw;
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_currency_id);
            }

            return(_result);
        }