public void HandleRequest(HttpListenerContext context)
 {
     NameValueCollection query;
     using (StreamReader rdr = new StreamReader(context.Request.InputStream))
     {
         query = HttpUtility.ParseQueryString(rdr.ReadToEnd());
     }
     int offset = int.Parse(query["offset"]);
     using (Database dbx = new Database())
     {
         var cmd = dbx.CreateQuery();
         cmd.CommandText = "SELECT * FROM info ORDER BY date DESC LIMIT 1 OFFSET @off;";
         cmd.Parameters.AddWithValue("@off", offset);
         using (var rdr = cmd.ExecuteReader())
         {
             rdr.Read();
             var page = new PageItem()
             {
             };
             page.Name = rdr.GetString("name");
             List<string> contents = new List<string>();
             if (rdr.GetInt32("newsType") == 0)
             {
                 foreach (var i in rdr.GetString("contents").Split('&'))
                 {
                     contents.Add(i);
                 }
                 page.ContentType = 0;
                 page.ContentLines = contents.ToArray();
             }
             else
             {
                 foreach (var i in rdr.GetString("contents").Split('&'))
                     contents.Add(i);
                 page.ContentType = rdr.GetInt32("newsType");
                 page.ContentLines = contents.ToArray();
             }
             DateTime time = rdr.GetDateTime("date");
             page.Date = time.ToString("g");
             if (!rdr.IsDBNull(rdr.GetOrdinal("link")) && rdr.GetString("link") != "")
             {
                 page.Link = rdr.GetString("link");
             }
             byte[] fff = Encoding.ASCII.GetBytes(page.ToString());
             context.Response.OutputStream.Write(fff, 0, fff.Length);
             context.Response.Close();
         }
         dbx.Dispose();
     }
 }
 public void HandleRequest(HttpListenerContext context)
 {
     //reads database for latest version, might use executescalar depending on the read order, i'll see
     string version = "";
     using (Database db = new Database())
     {
         var cmd = db.CreateQuery();
         cmd.CommandText = "SELECT cliversion FROM clinews";
         object scalar = cmd.ExecuteScalar();
         version = scalar.ToString();
         db.Dispose();
     }
     byte[] responsebytes = Encoding.ASCII.GetBytes(version);
     context.Response.OutputStream.Write(responsebytes, 0, responsebytes.Length);
     context.Response.Close();
     
 }
 //xml structure:
 //<news>
 //  <newsItem date="News item date" cliVersion="Client version">
 //      <name>News item name</name>
 //      <contentItem newsType="News type">News item content (line)</contentItem>
 //      <link>Whatever</link>
 //  </newsItem>
 //</news>
 public void HandleRequest(HttpListenerContext context)
 {
     try
     {
         var dof = new XDocument();
         dof.Add(new XElement("news"));
         var doc = dof.Root;
         bool nullnews = true;
         using (Database db = new Database())
         {
             var cmd = db.CreateQuery();
             cmd.CommandText = "SELECT * FROM clinews ORDER BY date DESC;";
             using (var rdr = cmd.ExecuteReader())
             {
                 if (!rdr.HasRows) nullnews = true;
                 else
                 {
                     nullnews = false;
                     while (rdr.Read())
                     {
                         XElement newsItem = new XElement("newsItem");
                         newsItem.Add(new XElement("name", rdr.GetString("name")));
                         if (rdr.GetInt32("newsType") == 0)
                         {
                             foreach (var i in rdr.GetString("contents").Split('&'))
                                 newsItem.Add(new XElement("contentItem", i, new XAttribute("newsType", rdr.GetInt32("newsType"))));
                         }
                         else
                         {
                             foreach (var i in rdr.GetString("contents").Split('&'))
                                 newsItem.Add(new XElement("contentItem", i, new XAttribute("newsType", rdr.GetInt32("newsType"))));
                         }
                         DateTime time = rdr.GetDateTime("date");
                         newsItem.Add(new XAttribute("date", time.ToString("g")));
                         //ver.Text = "v" + rdr.GetString("cliVersion");
                         newsItem.Add(new XAttribute("cliVersion", rdr.GetString("cliVersion")));
                         if (!rdr.IsDBNull(rdr.GetOrdinal("link")))
                         {
                             if (rdr.GetString("link") != "" || rdr.GetString("link") != null)
                             {
                                 newsItem.Add(new XElement("link", rdr.GetString("link")));
                             }
                         }
                         doc.Add(newsItem);
                     }
                 }
             }
             db.Dispose();
         }
         var bytes = System.Text.Encoding.ASCII.GetBytes(doc.ToString());
         if (nullnews == true)
         {
             bytes = System.Text.Encoding.ASCII.GetBytes("nullnews");
         }
         context.Response.OutputStream.Write(bytes, 0, bytes.Length);
         context.Response.Close();
         
     }
     catch(Exception e)
     {
         Console.WriteLine(e.ToString());
     }
 }
 public void HandleRequest(HttpListenerContext context)
 {
     //elaborates a download link basing on the latest version number and the usual file location (luci's dropbox for example)
     using (Database db = new Database())
     {
         var cmd = db.CreateQuery();
         cmd.CommandText = "SELECT download FROM clinews";
         var scalar = Encoding.ASCII.GetBytes(cmd.ExecuteScalar().ToString());
         context.Response.OutputStream.Write(scalar, 0, scalar.Length);
         context.Response.Close();
         db.Dispose();
     }
 }