Esempio n. 1
0
        public void run()
        {
            if (!DataBase.connect())
            {
                Console.WriteLine("Error, database not connected!");
                return;
            }

            listener.Start();
            Console.WriteLine("Listening for connections on {0}", url);

            Thread minuteTasksThread = new Thread(delegate()
            {
                while (true)
                {
                    if (!DataBase.getEndedSaleNotifications())
                    {
                        Console.WriteLine("Couldn't generate sale end notifications!");
                    }
                    Thread.Sleep(60000);
                }
            });

            //so it exits when app exits
            minuteTasksThread.IsBackground = true;
            minuteTasksThread.Start();

            while (true)
            {
                /*if(Console.In.Peek() != -1)
                 * {
                 *  string command = Console.ReadLine();
                 *  if (command == "stop")
                 *  {
                 *      break;
                 *  }
                 *  else
                 *  {
                 *      Console.WriteLine("unrecognized command: '" + command + "'");
                 *  }
                 * }*/

                HttpListenerContext context = listener.GetContext();

                HttpListenerRequest  request  = context.Request;
                HttpListenerResponse response = context.Response;

                Console.WriteLine("[" + DateTime.Now.ToLongTimeString() + "] " + request.Url.ToString());

                byte[] data;

                try
                {
                    switch (request.HttpMethod)
                    {
                    case "GET":
                        data = handleGET(request);
                        break;

                    case "POST":
                        data = handlePOST(request);
                        break;

                    default:
                        data = null;
                        break;
                    }

                    if (data == null)
                    {
                        data = Encoding.UTF8.GetBytes("{}");
                        response.StatusCode = 400;
                    }
                }catch (Exception e)
                {
                    data = Encoding.UTF8.GetBytes("{}");
                    response.StatusCode = 500;
                    Console.WriteLine(e);
                }


                response.ContentType     = "application/json";
                response.ContentEncoding = Encoding.UTF8;
                response.ContentLength64 = data.LongLength;

                response.OutputStream.Write(data, 0, data.Length);
                response.Close();
            }

            listener.Close();
        }