Exemplo n.º 1
0
        public void Start()
        {
            var reqpro = new RequestProcessor();

            _listener.Start();

            while (true)
            {
                try
                {
                    HttpListenerContext  context  = _listener.GetContext();
                    HttpListenerRequest  request  = context.Request;
                    HttpListenerResponse response = context.Response;
                    //Создаем ответ
                    Stream       inputStream = request.InputStream;
                    Encoding     encoding    = request.ContentEncoding;
                    StreamReader reader      = new StreamReader(inputStream, encoding);
                    var          requestBody = reader.ReadToEnd();

                    Console.WriteLine("{0} request was caught: {1}",
                                      request.HttpMethod, request.Url);
                    var    urlParts = request.Url.AbsolutePath.Split('/');
                    string msg;

                    try
                    {
                        if (urlParts[1] != "register")
                        {
                            DbProcessor.CheckAuth(urlParts[2], urlParts[3]);
                        }
                        msg = reqpro.GetResponseData(request.HttpMethod, urlParts, requestBody);
                        response.StatusCode = (int)HttpStatusCode.OK;
                    }
                    catch (Exception e)
                    {
                        msg = "Request error! " + e.Message;
                        Console.WriteLine(msg);
                        response.StatusCode = (int)HttpStatusCode.BadRequest;
                    }


                    byte[] b = Encoding.UTF8.GetBytes(msg);
                    context.Response.ContentLength64 = b.Length;
                    context.Response.OutputStream.Write(b, 0, b.Length);
                }
                catch (Exception exception)
                {
                    Console.WriteLine("Net trouble\r\n" + exception.Message);
                }
            }
        }