Exemplo n.º 1
0
        private async Task <HttpResponseMessage> RunRequestAsync(RequestStatement statement, TextWriter writer, bool modify)
        {
            try
            {
                var request = await CreateMessageAsync(baseUri, statement);

                writer.WriteHttp(await request.ShowAsync());
                if (modify || request.Method == HttpMethod.Get || request.Method == HttpMethod.Head)
                {
                    var response = await client.SendAsync(request);

                    foreach (var header in ResponseHeadersToHide)
                    {
                        response.Headers.Remove(header);
                    }

                    // writer.WriteLine("```\r\n{0}\r\n```", await response.ShowAsync(contentLimit));
                    writer.WriteHttp(await response.ShowAsync(contentLimit));
                    return(response);
                }
                else
                {
                    writer.WriteLine("```\r\n# Request not sent. Test mode enabled.\r\n```");
                }
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine("{0}", ex.Message);
            }
            return(null);
        }
Exemplo n.º 2
0
        // https://github.com/OData/WebApi/blob/4f8dc99320ac94f740fb825eb9e6095d57934c8e/src/System.Net.Http.Formatting/HttpContentMessageExtensions.cs
        private async Task <HttpRequestMessage> CreateMessageAsync(Uri uri, RequestStatement statement)
        {
            var(requestLine, headers, body) = statement;
            requestLine = FixVersion(requestLine, out var version);

            StringBuilder message = new StringBuilder();

            message.Append(requestLine);
            message.Append("\r\n");
            message.Append("Host: " + uri.Host + (uri.Port != 80 ? $":{uri.Port}" : string.Empty));
            message.Append("\r\n");
            foreach (string header in headers)
            {
                message.Append(header);
                message.Append("\r\n");
            }
            message.Append("\r\n");
            if (body != null)
            {
                message.Append(body);
            }

            var text = message.ToString();

            text = ReplaceVariables(text, environment);

            StringContent content = new StringContent(text);

            content.Headers.ContentType = HttpRequestMediaType;

            try
            {
                // TODO
                var request = await content.ReadAsHttpRequestMessageAsync(uri.Scheme);

                request.Version = version;
                return(request);
            }
            catch (InvalidOperationException ex)
            {
                Console.Error.WriteLine("{0}", ex.Message);
                return(null);
            }
        }