private Task <HttpResponseMessage> Request(string method, string path, NameValueCollection queryParams, StringContent content)
        {
            var queryString = "";

            if (queryParams.Count > 0)
            {
                queryString = ToQueryString(queryParams);
            }

            var hmacRequest = new HmacRequest
            {
                ApiId      = _apiId,
                ApiKey     = _apiKey,
                HostName   = _restBase,
                HttpMethod = method,
                Url        = path
            };
            var request = new HttpRequestMessage
            {
                Method     = new HttpMethod(method),
                RequestUri = new Uri($"https://{_restBase}{path}{queryString}", UriKind.Absolute)
            };

            request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json"));
            if (content != null)
            {
                request.Content = content;
            }

            request.Headers.Add(_authHeader, _cryptoService.GetHmacHeader(hmacRequest));
            return(new HttpClient().SendAsync(request));
        }
        public string Get(string path, NameValueCollection queryParams)
        {
            var webClient = new WebClient {
                BaseAddress = $"https://{_base}"
            };

            var queryString = "";

            if (queryParams.Count > 0)
            {
                queryString = ToQueryString(queryParams);
            }

            var hmacRequest = new HmacRequest
            {
                ApiId      = _apiId,
                ApiKey     = _apiKey,
                HostName   = _base,
                HttpMethod = "GET",
                Url        = path + queryString
            };

            var authorization = _cryptoService.GetHmacHeader(hmacRequest);

            webClient.Headers.Add(_authHeader, authorization);
            var response = webClient.DownloadString($"{path}{queryString}");

            return(XmlParseHelper.GetDecodedXmlResponse(response, true));
        }
        public string PostFile(string path, NameValueCollection queryParams, string filepath)
        {
            var webClient = new WebClient {
                BaseAddress = $"https://{_base}"
            };

            var queryString = "";

            if (queryParams.Count > 0)
            {
                queryString = ToQueryString(queryParams);
            }

            var hmacRequest = new HmacRequest
            {
                ApiId      = _apiId,
                ApiKey     = _apiKey,
                HostName   = _base,
                HttpMethod = "POST",
                Url        = path + queryString
            };

            var authorization = _cryptoService.GetHmacHeader(hmacRequest);

            webClient.Headers.Add(_authHeader, authorization);
            webClient.Headers[HttpRequestHeader.ContentType] = "binary/octet-stream";
            byte[] bytes          = File.ReadAllBytes(filepath);
            var    responseBytes  = webClient.UploadData($"{path}{queryString}", "POST", bytes);
            var    responseString = Encoding.ASCII.GetString(responseBytes);

            return(XmlParseHelper.GetDecodedXmlResponse(responseString, true));
        }