/GrinGlobal.Client.Common/GrinGlobal.Client.Common/WebServicesLocator.cs

https://gitlab.com/GRIN-Global/GRIN-Global-Curator-tool · C# · 221 lines · 204 code · 13 blank · 4 comment · 19 complexity · b0c642f2a7f04fff56164fea42b1f279 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. namespace GRINGlobal.Client.Common
  10. {
  11. public partial class WebServicesLocator : Form
  12. {
  13. Dictionary<string, string> _origWebServiceURLs;
  14. DataTable _webServiceURLs;
  15. BindingSource _webServiceURLsBindingSource;
  16. public WebServicesLocator(Dictionary<string, string> WebServiceURLs)
  17. {
  18. InitializeComponent();
  19. _origWebServiceURLs = WebServiceURLs;
  20. _webServiceURLs = new DataTable();
  21. _webServiceURLs.Columns.Add("display_member", typeof(string));
  22. _webServiceURLs.Columns.Add("value_member", typeof(string));
  23. _webServiceURLs.Columns.Add("is_ssl_connection", typeof(bool));
  24. _webServiceURLs.Columns.Add("is_ldap_connection", typeof(bool));
  25. foreach (string key in WebServiceURLs.Keys)
  26. {
  27. DataRow newURL = _webServiceURLs.NewRow();
  28. if (WebServiceURLs[key].ToString().Contains("ldap://"))
  29. {
  30. newURL["value_member"] = WebServiceURLs[key].ToString().Replace("ldap://", "").Replace("/GRINGlobal/GUI.asmx", "").Trim();
  31. newURL["is_ssl_connection"] = true;
  32. newURL["is_ldap_connection"] = true;
  33. }
  34. else if (WebServiceURLs[key].ToString().Contains("https://"))
  35. {
  36. newURL["value_member"] = WebServiceURLs[key].ToString().Replace("https://", "").Replace("/GRINGlobal/GUI.asmx", "").Trim();
  37. newURL["is_ssl_connection"] = true;
  38. newURL["is_ldap_connection"] = false;
  39. }
  40. else
  41. {
  42. newURL["value_member"] = WebServiceURLs[key].ToString().Replace("http://", "").Replace("/GRINGlobal/GUI.asmx", "").Trim();
  43. newURL["is_ssl_connection"] = false;
  44. newURL["is_ldap_connection"] = false;
  45. }
  46. newURL["display_member"] = key.ToString();
  47. _webServiceURLs.Rows.Add(newURL);
  48. }
  49. ux_listboxWebserviceURLNames.DisplayMember = "display_member";
  50. ux_listboxWebserviceURLNames.ValueMember = "value_member";
  51. _webServiceURLsBindingSource = new BindingSource(_webServiceURLs, null);
  52. ux_listboxWebserviceURLNames.DataSource = _webServiceURLsBindingSource;
  53. ux_textboxListName.DataBindings.Add("Text", _webServiceURLsBindingSource, "display_member");
  54. ux_textboxServerName.DataBindings.Add("Text", _webServiceURLsBindingSource, "value_member");
  55. ux_checkboxUseSSL.DataBindings.Add("Checked", _webServiceURLsBindingSource, "is_ssl_connection");
  56. ux_checkboxUseLDAP.DataBindings.Add("Checked", _webServiceURLsBindingSource, "is_ldap_connection");
  57. }
  58. private void ux_buttonOK_Click(object sender, EventArgs e)
  59. {
  60. _origWebServiceURLs.Clear();
  61. foreach (DataRow dr in _webServiceURLs.Rows)
  62. {
  63. if ((bool)dr["is_ldap_connection"] && (bool)dr["is_ssl_connection"])
  64. {
  65. _origWebServiceURLs.Add(dr["display_member"].ToString(), "ldap://" + dr["value_member"].ToString() + "/GRINGlobal/GUI.asmx");
  66. }
  67. else if ((bool)dr["is_ssl_connection"])
  68. {
  69. _origWebServiceURLs.Add(dr["display_member"].ToString(), "https://" + dr["value_member"].ToString() + "/GRINGlobal/GUI.asmx");
  70. }
  71. else
  72. {
  73. _origWebServiceURLs.Add(dr["display_member"].ToString(), "http://" + dr["value_member"].ToString() + "/GRINGlobal/GUI.asmx");
  74. }
  75. }
  76. }
  77. private void ux_buttonCancel_Click(object sender, EventArgs e)
  78. {
  79. }
  80. private void ux_buttonTestServer_Click(object sender, EventArgs e)
  81. {
  82. // Test the address for the GRIN-Global web services...
  83. try
  84. {
  85. string serverAddress = "";
  86. if (ux_checkboxUseLDAP.Checked || ux_checkboxUseSSL.Checked)
  87. {
  88. serverAddress = "https://" + ux_textboxServerName.Text.Trim() + "/GRINGlobal/GUI.asmx";
  89. }
  90. else
  91. {
  92. serverAddress = "http://" + ux_textboxServerName.Text.Trim() + "/GRINGlobal/GUI.asmx";
  93. }
  94. // Check to make sure the URL is valid...
  95. Uri uriResult;
  96. if(Uri.TryCreate(serverAddress, UriKind.Absolute, out uriResult))
  97. {
  98. if(uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps)
  99. {
  100. // Test the URL to make sure it is reachable right now...
  101. System.Net.WebClient wc = new System.Net.WebClient();
  102. var junk = wc.DownloadData(serverAddress);
  103. // If we made it past the DownloadData() method the URL must be up and running - so test if it is a GG website...
  104. WebServices ws = new WebServices(serverAddress, "", "", "", "");
  105. string wsVersion = ws.GetVersion();
  106. if (wsVersion.ToLower().StartsWith("gringlobal.web"))
  107. {
  108. MessageBox.Show("Successfully connected to server running '" + wsVersion + "'");
  109. }
  110. else
  111. {
  112. MessageBox.Show("'" + ux_textboxServerName.Text.Trim() + "' is not a valid GRIN-Global server.\n\r\n\r" + "Server response: '" + wsVersion + "'");
  113. }
  114. }
  115. }
  116. }
  117. catch
  118. {
  119. MessageBox.Show("Server '" + ux_textboxServerName.Text.Trim() + "' is not responding.");
  120. }
  121. }
  122. private void ux_buttonAddNewListItem_Click(object sender, EventArgs e)
  123. {
  124. string serverAddress = "localhost";
  125. DataRow newURL = _webServiceURLs.NewRow();
  126. newURL["value_member"] = serverAddress;
  127. newURL["display_member"] = ux_groupboxListName.Text.Trim();
  128. newURL["is_ssl_connection"] = false;
  129. newURL["is_ldap_connection"] = false;
  130. _webServiceURLs.Rows.Add(newURL);
  131. ux_listboxWebserviceURLNames.SelectedIndex = ux_listboxWebserviceURLNames.Items.Count - 1;
  132. ux_textboxListName.Focus();
  133. ux_textboxListName.SelectAll();
  134. }
  135. private void ux_buttonDeleteListItem_Click(object sender, EventArgs e)
  136. {
  137. _webServiceURLs.Rows[_webServiceURLsBindingSource.Position].Delete();
  138. }
  139. private void ux_buttonMoveUp_Click(object sender, EventArgs e)
  140. {
  141. if (_webServiceURLsBindingSource.Position > 0)
  142. {
  143. int currentIndex = _webServiceURLsBindingSource.Position;
  144. string tempDisplayMember = _webServiceURLs.Rows[currentIndex]["display_member"].ToString();
  145. string tempValueMember = _webServiceURLs.Rows[currentIndex]["value_member"].ToString();
  146. bool tempIsSSLConnection = (bool)_webServiceURLs.Rows[currentIndex]["is_ssl_connection"];
  147. bool tempIsLDAPConnection = (bool)_webServiceURLs.Rows[currentIndex]["is_ldap_connection"];
  148. _webServiceURLs.Rows[currentIndex]["display_member"] = _webServiceURLs.Rows[currentIndex - 1]["display_member"];
  149. _webServiceURLs.Rows[currentIndex]["value_member"] = _webServiceURLs.Rows[currentIndex - 1]["value_member"];
  150. _webServiceURLs.Rows[currentIndex]["is_ssl_connection"] = _webServiceURLs.Rows[currentIndex - 1]["is_ssl_connection"];
  151. _webServiceURLs.Rows[currentIndex]["is_ldap_connection"] = _webServiceURLs.Rows[currentIndex - 1]["is_ldap_connection"];
  152. _webServiceURLs.Rows[currentIndex - 1]["display_member"] = tempDisplayMember;
  153. _webServiceURLs.Rows[currentIndex - 1]["value_member"] = tempValueMember;
  154. _webServiceURLs.Rows[currentIndex - 1]["is_ssl_connection"] = tempIsSSLConnection;
  155. _webServiceURLs.Rows[currentIndex - 1]["is_ldap_connection"] = tempIsLDAPConnection;
  156. _webServiceURLsBindingSource.MovePrevious();
  157. }
  158. }
  159. private void ux_buttonMoveDown_Click(object sender, EventArgs e)
  160. {
  161. if (_webServiceURLsBindingSource.Position < (_webServiceURLsBindingSource.Count - 1))
  162. {
  163. int currentIndex = _webServiceURLsBindingSource.Position;
  164. string tempDisplayMember = _webServiceURLs.Rows[currentIndex]["display_member"].ToString();
  165. string tempValueMember = _webServiceURLs.Rows[currentIndex]["value_member"].ToString();
  166. bool tempIsSSLConnection = (bool)_webServiceURLs.Rows[currentIndex]["is_ssl_connection"];
  167. bool tempIsLDAPConnection = (bool)_webServiceURLs.Rows[currentIndex]["is_ldap_connection"];
  168. _webServiceURLs.Rows[currentIndex]["display_member"] = _webServiceURLs.Rows[currentIndex + 1]["display_member"];
  169. _webServiceURLs.Rows[currentIndex]["value_member"] = _webServiceURLs.Rows[currentIndex + 1]["value_member"];
  170. _webServiceURLs.Rows[currentIndex]["is_ssl_connection"] = _webServiceURLs.Rows[currentIndex + 1]["is_ssl_connection"];
  171. _webServiceURLs.Rows[currentIndex]["is_ldap_connection"] = _webServiceURLs.Rows[currentIndex + 1]["is_ldap_connection"];
  172. _webServiceURLs.Rows[currentIndex + 1]["display_member"] = tempDisplayMember;
  173. _webServiceURLs.Rows[currentIndex + 1]["value_member"] = tempValueMember;
  174. _webServiceURLs.Rows[currentIndex + 1]["is_ssl_connection"] = tempIsSSLConnection;
  175. _webServiceURLs.Rows[currentIndex + 1]["is_ldap_connection"] = tempIsLDAPConnection;
  176. _webServiceURLsBindingSource.MoveNext();
  177. }
  178. }
  179. private void ux_textboxListName_TextChanged(object sender, EventArgs e)
  180. {
  181. ((DataRowView)_webServiceURLsBindingSource.Current)["display_member"] = ux_textboxListName.Text;
  182. }
  183. private void ux_checkboxUseSSL_CheckedChanged(object sender, EventArgs e)
  184. {
  185. if (ux_checkboxUseSSL.Checked)
  186. {
  187. ux_checkboxUseLDAP.Enabled = true;
  188. ux_checkboxUseLDAP.Checked = (bool)_webServiceURLs.Rows[_webServiceURLsBindingSource.Position]["is_ldap_connection"];
  189. }
  190. else
  191. {
  192. ux_checkboxUseLDAP.Enabled = false;
  193. ux_checkboxUseLDAP.Checked = false;
  194. }
  195. }
  196. private void ux_checkboxUseLDAP_CheckedChanged(object sender, EventArgs e)
  197. {
  198. if (ux_checkboxUseLDAP.Checked)
  199. {
  200. ux_checkboxUseSSL.Enabled = false;
  201. }
  202. else
  203. {
  204. ux_checkboxUseSSL.Enabled = true;
  205. }
  206. }
  207. }
  208. }