/* Funktio tarkistaa yhteyden serveriin. */ public static void Test() { Console.WriteLine("Start NetTest...."); if (MainWindow.instantiate.Dispatcher.CheckAccess()) { if (IsNetWorkOk()) { MainWindow.instantiate.Time.Visibility = System.Windows.Visibility.Hidden; MainWindow.instantiate.Error.Visibility = System.Windows.Visibility.Hidden; MainWindow.instantiate.Active(); } else { Threading.WaitWithOutput(5f, Test, UpdateForm.UpdateTime); FileWriter.WriteInFile("ERROR: PING - " + Information.ip + " - RESULT FAILED"); UpdateForm.UpdateError("Faced unhandled error while ping test! :("); } } else { object[] obj = { }; MainWindow.instantiate.Dispatcher.Invoke(new Threading.Callback(Test), obj); } }
static void InputThreadTimer(int seconds, Callback callback) { DateTime startTime = DateTime.Now; while (true) { TimeSpan duration = DateTime.Parse(DateTime.Now.ToString()).Subtract(DateTime.Parse(startTime.ToString())); if (duration.Seconds >= seconds) { break; } Thread.Sleep(10); } InputHandler.ignoreInput = true; FileWriter.WriteInFile("TIME CANCELED: QR READING TIME CANCELED"); UpdateForm.UpdateError("Time cancel reading.."); callback.Invoke(); }
/* Huonosti nimetty funktio. Hoitaa niin puretun qr datan lähettämisen kuin myös serveriltä tulevan vastauksen */ public void SendMessage(string message) { if (!MainWindow.instantiate.Dispatcher.CheckAccess()) { object[] obj = { message }; MainWindow.instantiate.Dispatcher.Invoke(new Threading.Output_s(SendMessage), obj); return; } UpdateForm.UpdateError("CONNECTING....", false); /* UI funktio */ /* Uusi HttpWebRequest + params + Header data */ var request = (HttpWebRequest)WebRequest.Create("http://" + Information.ip + ":" + Information.port + "/api"); var postData = "qr=" + message; var data = Encoding.ASCII.GetBytes(postData); Console.WriteLine("message: " + message); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; /**********************************************/ try { using (var stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } var response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { UpdateForm.HideError(); /* Serverin vastaus. Vastaus on muotoa Json */ var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); Console.WriteLine("STATUS OK"); /* ********************************************************************* * Tekee Json stringistä uuden objektin. * Tyyliltään kuin javascript objekti (Lohko = Objekti['lohko'] ---> Alalohko = Lohko['Alalohko'] ) * *********************************************************************/ JsonData json = JsonMapper.ToObject(responseString); if (json["status"].ToString() == "404") /* Käyttäjää ei löytynyt Qr koodin avulla */ { FileWriter.WriteInFile("ERROR: RESPONSE USER NOT FOUND! - QR=" + message); /* Kirjaa virhe lokiin */ UpdateForm.UpdateErrorCallback("KÄYTTÄJÄÄ EI LÖYTYNYT!"); /* UI funktio */ MainWindow.instantiate.BG.Background = new SolidColorBrush(Color.FromArgb(255, 147, 0, 17)); response.Close(); return; } else if (json["status"].ToString() == "message") /* Virhe ilmoitus viesti (vapaa päivä) */ { FileWriter.WriteInFile("ERROR: " + json["time"].ToString() + " - QR=" + message); UpdateForm.UpdateErrorCallback(json["time"].ToString()); MainWindow.instantiate.BG.Background = new SolidColorBrush(Color.FromArgb(255, 178, 156, 41)); response.Close(); return; } else /* Joko kirjaudutaan sisään tai ulos vastaus */ { string resp = "Kirjaudutaan ulos"; MainWindow.instantiate.Name.Content = json["firstname"].ToString() + " " + json["lastname"].ToString(); Console.WriteLine(json["firstname"].ToString() + " " + json["lastname"].ToString()); MainWindow.instantiate.LogTime.Content = DateTime.Now.Hour + ":" + DateTime.Now.Minute; MainWindow.instantiate.Date.Content = DateTime.Now.ToString("d.M.yyyy"); if (json["loggedin"].ToString() == "true") { Console.WriteLine("Logged in: " + json["loggedin"].ToString()); resp = "Kirjaudutaan sisään"; MainWindow.instantiate.Between.Visibility = System.Windows.Visibility.Hidden; } else { MainWindow.instantiate.Between.Visibility = System.Windows.Visibility.Visible; MainWindow.instantiate.Between.Content = "Kirjautuneena: " + json["timebetween"].ToString(); Console.WriteLine("Logged in: " + json["loggedin"].ToString()); if (json["daydone"].ToString() == "true") { MainWindow.instantiate.BG.Background = new SolidColorBrush(Color.FromArgb(255, 43, 132, 35)); } else { MainWindow.instantiate.BG.Background = new SolidColorBrush(Color.FromArgb(255, 147, 0, 17)); } } MainWindow.instantiate.Type.Content = resp; MainWindow.instantiate.Center.Visibility = Visibility.Visible; } } Threading.Wait(5, MainWindow.instantiate.ReActive); /* Asettaa 5 sekunnin odotuksen kunnes uudelleen aktivoi syötteen lukemisen */ response.Close(); } catch (WebException ex) { Console.WriteLine("error: " + ex.ToString()); request.Abort(); Threading.Wait(3, NetTest.Test); //UpdateForm.UpdateError("Connection Error"); } }