예제 #1
0
        private void RequestProcess(TcpClient newClient)
        {
            var clientRequest = ReadClientRequest(newClient);

            Console.WriteLine("%%%%%%%%%%%%%%%% Новый запрос %%%%%%%%%%%%%%%%");
            Console.WriteLine(clientRequest);
            Console.WriteLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");

            var parser = new ParserHttpHeader(clientRequest);

            if (parser.Route == "/Guestbook/")
            {
                if (parser.RequestType == RequestType.Get)
                {
                    // возвращаем все записи из гостевой книги
                    ReturnAllMessage(newClient, _storage.GetAll());
                }
                else if (parser.RequestType == RequestType.Post)
                {
                    // если есть user и message то пишем их или в БД или в XML
                    if (parser.Data.ContainsKey("user") && parser.Data.ContainsKey("message"))
                    {
                        //  todo нужно обработать соосбщения на наличие sql injection
                        _storage.AddMessage(parser.Data["user"], parser.Data["message"]);
                    }
                }
            }
            else if (parser.Route == "/Proxy/")
            {
                // todo нужно загрузить данные из переданного url и вернуть их в ответе
                if (parser.Data.ContainsKey("url"))
                {
                    // загрузим страницу
                    var    url = parser.Data["url"];
                    string htmlString;
                    using (var webClient = new WebClient())
                    {
                        //webClient.UseDefaultCredentials = true;
                        //webClient.Proxy = WebRequest.GetSystemWebProxy();
                        htmlString = webClient.DownloadString(url);
                    }
                    // отправим ее пользователю
                    ReturnString(newClient, htmlString);
                }
            }
            else
            {
                // стандартное приветствие
                ReturnHTMLHelloWorld(newClient);
            }

            newClient.Close();
        }