/// <summary>
        /// Implementation of raw request API
        /// </summary>
        /// <param name="cd"></param>
        /// <param name="verb"></param>
        /// <param name="relativePath"></param>
        /// <param name="jsonPayload"></param>
        /// <param name="mimeType"></param>
        /// <returns></returns>
        private async Task <HttpResponseMessage> InternalRestCallAsync(CallDuration cd, string verb, AvaTaxPath relativePath, object jsonPayload, string mimeType = null)
        {
            // Setup the request
            using (var request = new HttpRequestMessage()) {
                request.Method     = new HttpMethod(verb);
                request.RequestUri = new Uri(_envUri, relativePath.ToString());

                // Add headers
                foreach (var key in _clientHeaders.Keys)
                {
                    request.Headers.Add(key, _clientHeaders[key]);
                }

                //Add payload if present.
                if (mimeType == "multipart/form-data")
                {
                    request.Content = jsonPayload as MultipartFormDataContent;
                }
                else if (jsonPayload != null)
                {
                    request.Content = new StringContent(jsonPayload as string, Encoding.UTF8, mimeType);
                }

                // Send
                cd.FinishSetup();

                return(await _client.SendAsync(request).ConfigureAwait(false));
            }
        }
示例#2
0
        /// <summary>
        /// Implementation of raw request API
        /// </summary>
        /// <param name="cd"></param>
        /// <param name="verb"></param>
        /// <param name="relativePath"></param>
        /// <param name="content"></param>
        /// <returns></returns>
        private async Task <HttpResponseMessage> InternalRestCallAsync(CallDuration cd, string verb, AvaTaxPath relativePath, object content)
        {
            // Setup the request
            using (var request = new HttpRequestMessage()) {
                request.Method     = new HttpMethod(verb);
                request.RequestUri = new Uri(_envUri, relativePath.ToString());

                // Add credentials and client header
                if (_credentials != null)
                {
                    request.Headers.Add("Authorization", _credentials);
                }
                if (_clientHeader != null)
                {
                    request.Headers.Add("X-Avalara-Client", _clientHeader);
                }

                // Add payload
                if (content != null)
                {
                    var json = JsonConvert.SerializeObject(content, SerializerSettings);
                    request.Content = new StringContent(json, Encoding.UTF8, "application/json");
                }

                // Send
                cd.FinishSetup();
                return(await _client.SendAsync(request).ConfigureAwait(false));
            }
        }
        /// <summary>
        /// Implementation of raw request API
        /// </summary>
        /// <param name="cd"></param>
        /// <param name="verb"></param>
        /// <param name="relativePath"></param>
        /// <param name="jsonPayload"></param>
        /// <returns></returns>
        private async Task <HttpResponseMessage> InternalRestCallAsync(CallDuration cd, string verb, AvaTaxPath relativePath, string jsonPayload)
        {
            // Setup the request
            using (var request = new HttpRequestMessage()) {
                request.Method     = new HttpMethod(verb);
                request.RequestUri = new Uri(_envUri, relativePath.ToString());

                // Add headers
                foreach (var key in _clientHeaders.Keys)
                {
                    request.Headers.Add(key, _clientHeaders[key]);
                }

                // Add payload
                if (jsonPayload != null)
                {
                    request.Content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
                }

                // Send
                cd.FinishSetup();
                return(await _client.SendAsync(request).ConfigureAwait(false));
            }
        }