Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="endpoint">api link address of a function</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <IRestRequest> CreateDeleteRequestAsync(string endpoint, Dictionary <string, object> args = null)
        {
            var _request = await base.CreateDeleteRequestAsync(endpoint, args);

            if (IsAuthentication == true)
            {
                var _params = new Dictionary <string, object>();
                {
                    foreach (var _param in _request.Parameters)
                    {
                        _params.Add(_param.Name, _param.Value);
                    }

                    _request.Parameters.Clear();
                }

                var _delete_data = _params.Count > 0 ? this.SerializeObject(_params, Formatting.None) : "";
                {
                    var _method    = _request.Method.ToString();
                    var _url       = ApiUrl + endpoint;
                    var _body      = _delete_data;
                    var _nonce     = GenerateOnlyNonce(16).ToString();
                    var _timestamp = GenerateNonceString(13);

                    var _json_sign = this.SerializeObject(new[]
                    {
                        _method,
                        _url,
                        _body,
                        _nonce,
                        _timestamp
                    }, Formatting.None);

                    var _sign_nonce = Sha256Managed.ComputeHash(Encoding.UTF8.GetBytes(_nonce + _json_sign));
                    var _sign_data  = Encoding.UTF8.GetBytes(_url).Concat(_sign_nonce).ToArray();

                    var _signature = Convert.ToBase64String(Encryptor.ComputeHash(_sign_data));
                    {
                        _request.AddHeader("Authorization", $"{ConnectKey}:{_signature}");
                        _request.AddHeader("X-Auth-Timestamp", _timestamp);
                        _request.AddHeader("X-Auth-Nonce", _nonce);
                    }

                    _request.AddParameter(new Parameter("application/json", _delete_data, ParameterType.RequestBody));
                }
            }

            return(await Task.FromResult(_request));
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="endpoint">api link address of a function</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <IRestRequest> CreateGetRequestAsync(string endpoint, Dictionary <string, object> args = null)
        {
            var _request = await base.CreateGetRequestAsync(endpoint, args);

            if (IsAuthentication == true)
            {
                var _post_params = _request.Parameters.ToDictionary(p => p.Name, p => p.Value);

                var _post_data = ToQueryString(_post_params);
                {
                    var _query = _post_data.Length > 0 ? "?" + _post_data : "";

                    var _method    = _request.Method.ToString();
                    var _url       = ApiUrl + endpoint + _query;
                    var _body      = "";
                    var _nonce     = GenerateOnlyNonce(16).ToString();
                    var _timestamp = GenerateNonceString(13);

                    var _json_sign = this.SerializeObject(new[]
                    {
                        _method,
                        _url,
                        _body,
                        _nonce,
                        _timestamp
                    }, Formatting.None);

                    var _sign_nonce = Sha256Managed.ComputeHash(Encoding.UTF8.GetBytes(_nonce + _json_sign));
                    var _sign_data  = Encoding.UTF8.GetBytes(_url).Concat(_sign_nonce).ToArray();

                    var _signature = Convert.ToBase64String(Encryptor.ComputeHash(_sign_data));
                    {
                        _request.AddHeader("Authorization", $"{ConnectKey}:{_signature}");
                        _request.AddHeader("X-Auth-Timestamp", _timestamp);
                        _request.AddHeader("X-Auth-Nonce", _nonce);
                    }
                }
            }

            return(await Task.FromResult(_request));
        }