moel@150: /*
moel@150:  
moel@344:   This Source Code Form is subject to the terms of the Mozilla Public
moel@344:   License, v. 2.0. If a copy of the MPL was not distributed with this
moel@344:   file, You can obtain one at http://mozilla.org/MPL/2.0/.
moel@150:  
moel@344:   Copyright (C) 2009-2010 Michael Möller <mmoeller@openhardwaremonitor.org>
moel@344: 	
moel@150: */
moel@150: 
moel@150: using System;
moel@150: using System.Drawing;
moel@150: using System.IO;
moel@150: using System.Net;
moel@150: using System.Text;
moel@150: using System.Windows.Forms;
moel@150: 
moel@150: namespace OpenHardwareMonitor.GUI {
moel@150:   public partial class ReportForm : Form {
moel@150: 
moel@150:     private string report;
moel@150: 
moel@150:     public ReportForm() {
moel@150:       InitializeComponent();
moel@150:       try {
moel@150:         titleLabel.Font = new Font(SystemFonts.DefaultFont, FontStyle.Bold);      
moel@150:         reportTextBox.Font = new Font(FontFamily.GenericMonospace,
moel@150:           SystemFonts.DefaultFont.Size);
moel@150:       } catch { }
moel@150:     }
moel@150: 
moel@150:     public string Report {
moel@150:       get { return report; }
moel@150:       set { 
moel@150:         report = value;
moel@150:         reportTextBox.Text = report;
moel@150:       }      
moel@150:     }
moel@150: 
moel@150:     private void sendButton_Click(object sender, EventArgs e) {
moel@150:       Version version = typeof(CrashForm).Assembly.GetName().Version;
moel@150:       WebRequest request = WebRequest.Create(
moel@150:         "http://openhardwaremonitor.org/report.php");
moel@150:       request.Method = "POST";
moel@150:       request.Timeout = 5000;
moel@150:       request.ContentType = "application/x-www-form-urlencoded";
moel@150: 
moel@150:       string report =
moel@206:         "type=hardware&" +
moel@206:         "version=" + Uri.EscapeDataString(version.ToString()) + "&" +
moel@206:         "report=" + Uri.EscapeDataString(reportTextBox.Text) + "&" +
moel@206:         "comment=" + Uri.EscapeDataString(commentTextBox.Text) + "&" +
moel@206:         "email=" + Uri.EscapeDataString(emailTextBox.Text);
moel@150:       byte[] byteArray = Encoding.UTF8.GetBytes(report);
moel@150:       request.ContentLength = byteArray.Length;
moel@150: 
moel@150:       try {
moel@150:         Stream dataStream = request.GetRequestStream();
moel@150:         dataStream.Write(byteArray, 0, byteArray.Length);
moel@150:         dataStream.Close();
moel@150: 
moel@150:         WebResponse response = request.GetResponse();
moel@150:         dataStream = response.GetResponseStream();
moel@150:         StreamReader reader = new StreamReader(dataStream);
moel@150:         string responseFromServer = reader.ReadToEnd();
moel@150:         reader.Close();
moel@150:         dataStream.Close();
moel@150:         response.Close();
moel@150: 
moel@150:         Close();
moel@150:       } catch (WebException) {
moel@150:         MessageBox.Show("Sending the hardware report failed.", "Error",
moel@150:           MessageBoxButtons.OK, MessageBoxIcon.Error);
moel@150:       }
moel@150:     }
moel@150:   }  
moel@150: }