Esempio n. 1
0
        private static async Task ReadHeaders(StreamReader streamReader, HTTPHeaders headers)
        {
            var text = default(string);

            do
            {
                text = await streamReader.ReadLineAsync();

                if (string.IsNullOrEmpty(text))
                {
                    return;
                }

                var match = regex.Match(text);
                if (match.Success == false)
                {
                    throw new NotSupportedException(text);
                }

                var key = match.Groups[1].ToString();
                var val = match.Groups[2].ToString();

                if (headers.GetHeader(key) is IPushableHTTPHeader header)
                {
                    header.Push(val);
                }
                else
                {
                    headers[key] = val;
                }
            } while (text != null);
        }
Esempio n. 2
0
        private static async Task SendResponse(HTTPHeaders headers, StreamWriter streamWriter, IHTTPDirective directive)
        {
            streamWriter.WriteLine(directive.ToString());

            await SendHeaders(streamWriter, headers);

            streamWriter.Flush();
        }
Esempio n. 3
0
        private static async Task SendHeaders(StreamWriter streamWriter, HTTPHeaders headers)
        {
            foreach (var key in headers)
            {
                if (string.IsNullOrEmpty(headers[key]))
                {
                    continue;
                }

                await streamWriter.WriteLineAsync($"{key}: {headers[key]}");
            }

            await streamWriter.WriteLineAsync();
        }