Guest User

Untitled

a guest
Oct 11th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.01 KB | None | 0 0
  1. using System;
  2. using System.Net;
  3. using System.IO;
  4. using System.Text;
  5.  
  6. public class HTTP
  7. {
  8. public string Host { get; set; }
  9. public string Username { get; set; }
  10. public string Password { get; set; }
  11.  
  12. public HttpStatusCode StatusCode { get; private set; }
  13. public string Body { get; private set; }
  14.  
  15. public HTTP()
  16. {
  17. this.Body = String.Empty;
  18. this.Username = String.Empty;
  19. this.Password = String.Empty;
  20. }
  21.  
  22. public HTTP(string host) : this()
  23. {
  24. Host = host;
  25. }
  26.  
  27. public HTTP(string host, string username, string password)
  28. : this(host)
  29. {
  30. Username = username;
  31. Password = password;
  32. }
  33.  
  34.  
  35. public bool Get(string url)
  36. {
  37. HttpWebRequest request = NewRequest(url);
  38. request.Method = "GET";
  39. return Execute(request);
  40. }
  41.  
  42. public bool Post(Event anEvent)
  43. {
  44. string url = String.Format("{0}/admin/events.json", Host);
  45. string json = anEvent.ToJsonString();
  46. return Post(url, json);
  47. }
  48.  
  49. public bool Post(string url, string data)
  50. {
  51. if (Host == null)
  52. return false;
  53.  
  54. HttpWebRequest request = NewRequest(url);
  55. request.Method = "POST";
  56. WritePostData(data, request);
  57. return Execute(request);
  58. }
  59.  
  60. private bool Execute(WebRequest request)
  61. {
  62. HttpWebResponse response = ExecuteRequest(request);
  63. UpdateWithResponse(response);
  64. return Success();
  65. }
  66.  
  67. private static HttpWebResponse ExecuteRequest(WebRequest request)
  68. {
  69. HttpWebResponse response;
  70. try {
  71. response = (HttpWebResponse)request.GetResponse();
  72. } catch (System.Net.WebException e) {
  73. if (e.Status == WebExceptionStatus.ProtocolError) {
  74. response = (HttpWebResponse)e.Response;
  75. } else {
  76. throw;
  77. }
  78. }
  79. return response;
  80. }
  81.  
  82. public bool Success()
  83. {
  84. return (StatusCode == HttpStatusCode.OK || StatusCode == HttpStatusCode.Created);
  85. }
  86.  
  87. private static void WritePostData(string data, HttpWebRequest request)
  88. {
  89. Stream writeStream = request.GetRequestStream();
  90. byte[] bytes = Encoding.UTF8.GetBytes(data);
  91. writeStream.Write(bytes, 0, bytes.Length);
  92. writeStream.Close();
  93. }
  94.  
  95. private HttpWebRequest NewRequest(string url)
  96. {
  97. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
  98. AuthenticateWithCredentials(request);
  99. request.ContentType = "application/json; charset=utf-8";
  100. return request;
  101. }
  102.  
  103. private void UpdateWithResponse(HttpWebResponse response)
  104. {
  105. StatusCode = response.StatusCode;
  106. Body = ExtractBodyFromResponse(response);
  107. }
  108.  
  109. private string ExtractBodyFromResponse(HttpWebResponse response)
  110. {
  111. Stream responseStream = response.GetResponseStream();
  112. StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8);
  113. return readStream.ReadToEnd();
  114. }
  115.  
  116. private void AuthenticateWithCredentials(WebRequest request)
  117. {
  118. if (CredentialsWereProvided())
  119. {
  120. CreateAndCacheNetworkCredentialsFromUsernameAndPassword(request);
  121. AddAuthorizationHeadersToRequest(request);
  122. }
  123. }
  124.  
  125. private bool CredentialsWereProvided()
  126. {
  127. return (Username != string.Empty && Password != string.Empty);
  128. }
  129.  
  130. private void CreateAndCacheNetworkCredentialsFromUsernameAndPassword(WebRequest request)
  131. {
  132. CredentialCache mycache = new CredentialCache();
  133. mycache.Add(request.RequestUri, "Basic", new NetworkCredential(Username, Password));
  134. request.Credentials = mycache;
  135. }
  136.  
  137. private void AddAuthorizationHeadersToRequest(WebRequest request)
  138. {
  139. string usernamePassword = Username + ":" + Password;
  140. string base64EncodedString = Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword));
  141. request.Headers.Add("Authorization", "Basic " + base64EncodedString);
  142. }
  143. }
Add Comment
Please, Sign In to add comment