using System; using System.Data; using System.Net; using System.Text; using System.Web.UI.WebControls; using CMS.EventLog; using CMS.GlobalHelper; using CMS.PortalControls; using CMS.SettingsProvider; public partial class CMSWebParts_WebServices_GridForRESTService : CMSAbstractWebPart { #region "Properties" /// /// Gets or sets the URL for querying REST Service. /// public string RESTServiceQueryURL { get { return URLHelper.ResolveUrl(ValidationHelper.GetString(GetValue("RESTServiceQueryURL"), "")); } set { SetValue("RESTServiceQueryURL", value); } } /// /// Gets or sets the user name. /// public string UserName { get { return ValidationHelper.GetString(GetValue("UserName"), ""); } set { SetValue("UserName", value); } } /// /// Gets or sets the user password. /// public string Password { get { return ValidationHelper.GetString(GetValue("Password"), ""); } set { SetValue("Password", value); } } #endregion /// /// Content loaded event handler. /// public override void OnContentLoaded() { base.OnContentLoaded(); SetupControl(); } /// /// Initializes the control properties. /// protected void SetupControl() { if (StopProcessing) { basicDataGrid.Visible = false; } else { ReloadData(); } } /// /// Reload control's data. /// public override void ReloadData() { base.ReloadData(); if (!string.IsNullOrEmpty(RESTServiceQueryURL)) { try { HttpWebRequest request = CreateWebRequest(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // If everything went ok, parse the xml recieved to dataset and bind it to the grid if (response.StatusCode == HttpStatusCode.OK) { DataSet ds = new DataSet(); ds.ReadXml(response.GetResponseStream()); basicDataGrid.DataSource = ds; basicDataGrid.DataBind(); basicDataGrid.ItemDataBound += new DataGridItemEventHandler(basicDataGrid_ItemDataBound); } } catch (Exception ex) { // Handle the error EventLogProvider.LogException("GridForRESTService", "GETDATA", ex); lblError.Text = ResHelper.GetStringFormat("RESTService.RequestFailed", ex.Message); lblError.Visible = true; } } } protected void basicDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e) { // Encode content of the cells foreach (TableCell item in e.Item.Cells) { item.Text = HTMLHelper.HTMLEncode(item.Text); } } /// /// Creates the WebRequest for querying the REST service. /// private HttpWebRequest CreateWebRequest() { string url = RESTServiceQueryURL; if (url.StartsWithCSafe("/")) { url = URLHelper.GetAbsoluteUrl(url); } HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentLength = 0; request.ContentType = "text/xml"; // Set credentials for basic authentication if (!string.IsNullOrEmpty(UserName)) { // Set the authorization header for basic authentication request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(UserName + ":" + Password)); } return request; } }