/// <summary> /// Initializes a new instance of the <see cref="Requester"/> class. /// </summary> /// <param name="feedback">The <see cref="SentryUserFeedback"/> to initialize with.</param> /// <param name="ravenClient">The <see cref="RavenClient"/> to initialize with.</param> internal Requester(SentryUserFeedback feedback, RavenClient ravenClient) { if (feedback == null) { throw new ArgumentNullException("feedback"); } if (ravenClient == null) { throw new ArgumentNullException("ravenClient"); } this.ravenClient = ravenClient; this.feedback = feedback; var feedbackString = string.Format("{0}?dsn={1}&{2}", ravenClient.CurrentDsn.FeedbackUri, ravenClient.CurrentDsn.Uri, feedback.ToString()); this.webRequest = CreateWebRequest(new Uri(feedbackString)); this.webRequest.Referer = ravenClient.CurrentDsn.Uri.DnsSafeHost; this.webRequest.ContentType = "application/x-www-form-urlencoded"; }
/// <summary> /// Sends the user feedback to sentry /// </summary> /// <returns>An empty string if succesful, otherwise the server response</returns> public string SendFeedback() { using (var s = this.webRequest.GetRequestStream()) { using (var sw = new StreamWriter(s)) { sw.Write(feedback.ToString()); } } using (var wr = (HttpWebResponse)this.webRequest.GetResponse()) { using (var responseStream = wr.GetResponseStream()) { if (responseStream == null) { return(null); } using (var sr = new StreamReader(responseStream)) { var response = sr.ReadToEnd(); return(response); } } } }