using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Net; using System.IO; using System.Collections.Specialized; using System.Runtime.Serialization; namespace TradeIdeas.TIProGUI { public static class AuthUtilities { public enum Method { GET, POST, PUT, DELETE }; /// /// Web Request Wrapper /// /// Http Method /// Full url to the web resource /// Data to post in querystring format /// The web server response. public static string WebRequest(Method method, string url, string postData) { return WebRequest(method, url, postData, null); } /// /// Web Request Wrapper /// /// Http Method /// Full url to the web resource /// Data to post in querystring format /// Additional Header Data /// The web server response. public static string WebRequest(Method method, string url, string postData, List> headers) { HttpWebRequest webRequest = null; StreamWriter requestWriter = null; string responseData = ""; webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest; if (headers != null) { foreach (KeyValuePair header in headers) { webRequest.Headers.Add(header.Key, header.Value); } } webRequest.Method = method.ToString(); webRequest.ServicePoint.Expect100Continue = false; //webRequest.UserAgent = "Identify your application please."; //webRequest.Timeout = 20000; if (method == Method.POST || method == Method.DELETE) { webRequest.ContentType = "application/x-www-form-urlencoded"; //POST the data. using (requestWriter = new StreamWriter(webRequest.GetRequestStream())) { requestWriter.Write(postData); requestWriter.Close(); } } responseData = WebResponseGet(webRequest); webRequest = null; return responseData; } /// /// Process the web response. /// /// The request object. /// The response data. public static string WebResponseGet(HttpWebRequest webRequest) { StreamReader responseReader = null; string responseData = ""; try { responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream()); responseData = responseReader.ReadToEnd(); } catch (WebException ex) { if (ex.Response != null) { responseReader = new StreamReader(ex.Response.GetResponseStream()); //Read the response. string innerResponseData = responseReader.ReadToEnd(); if (innerResponseData.Trim().Length > 0) { responseData = innerResponseData; } } if (responseReader != null) { responseReader.Close(); } if (webRequest != null) { try { webRequest.GetResponse().Close(); } catch { } } throw new Exception(responseData); } catch (Exception ex) { //TODO: Improve error handling responseData = ex.Message; if (responseReader != null) { responseReader.Close(); } if (webRequest != null) { try { webRequest.GetResponse().Close(); } catch { } } } //Release variables. responseReader = null; webRequest = null; return responseData; } } //Generic UserData for Forms Auth Cookie [DataContract] public class UserData { [DataMember] public string id; [DataMember] public string username; [DataMember] public string name; } }