HttpClient.cpp 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. #include "Test.h"
  2. #include "HttpClient.h"
  3. #include <Logging.h>
  4. #include <sstream>
  5. namespace Http {
  6. namespace Test {
  7. bool Execute(HttpClient& client, HttpRequest& request)
  8. {
  9. std::stringstream ss;
  10. try
  11. {
  12. client.Open(request);
  13. ss << "| SUCCESS |" << std::endl;
  14. Logging::Log(Logging::Severity::Info, ss.str());
  15. return true;
  16. }
  17. catch (const std::exception& e)
  18. {
  19. ss << "| FAIL |" << e.what() << std::endl;
  20. Logging::Log(Logging::Severity::Info, ss.str());
  21. return false;
  22. }
  23. }
  24. // -----
  25. bool TestHttpClientGet(HttpClient& client, HttpRequest& request)
  26. {
  27. std::stringstream ss;
  28. ss << "| GET |" << std::endl;
  29. Logging::Log(Logging::Severity::Info, ss.str());
  30. request.Method(HttpRequest::Method::GET);
  31. return Execute(client, request);
  32. }
  33. bool TestHttpClientHead(HttpClient& client, HttpRequest& request)
  34. {
  35. std::stringstream ss;
  36. ss << "| HEAD |" << std::endl;
  37. Logging::Log(Logging::Severity::Info, ss.str());
  38. request.Method(HttpRequest::Method::HEAD);
  39. return Execute(client, request);
  40. }
  41. bool TestHttpClientPost(HttpClient& client, HttpRequest& request)
  42. {
  43. std::stringstream ss;
  44. ss << "| POST |" << std::endl;
  45. Logging::Log(Logging::Severity::Info, ss.str());
  46. request.Method(HttpRequest::Method::POST);
  47. return Execute(client, request);
  48. }
  49. bool TestHttpClientPut(HttpClient& client, HttpRequest& request)
  50. {
  51. std::stringstream ss;
  52. ss << "| PUT |" << std::endl;
  53. Logging::Log(Logging::Severity::Info, ss.str());
  54. request.Method(HttpRequest::Method::PUT);
  55. return Execute(client, request);
  56. }
  57. bool TestHttpClientDelete(HttpClient& client, HttpRequest& request)
  58. {
  59. std::stringstream ss;
  60. ss << "| DELETE |" << std::endl;
  61. Logging::Log(Logging::Severity::Info, ss.str());
  62. request.Method(HttpRequest::Method::DELETE);
  63. return Execute(client, request);
  64. }
  65. bool TestHttpClientConnect(HttpClient& client, HttpRequest& request)
  66. {
  67. std::stringstream ss;
  68. ss << "| CONNECT |" << std::endl;
  69. Logging::Log(Logging::Severity::Info, ss.str());
  70. request.Method(HttpRequest::Method::CONNECT);
  71. return Execute(client, request);
  72. }
  73. bool TestHttpClientTrace(HttpClient& client, HttpRequest& request)
  74. {
  75. std::stringstream ss;
  76. ss << "| TRACE |" << std::endl;
  77. Logging::Log(Logging::Severity::Info, ss.str());
  78. request.Method(HttpRequest::Method::TRACE);
  79. return Execute(client, request);
  80. }
  81. bool TestHttpClientPatch(HttpClient& client, HttpRequest& request)
  82. {
  83. std::stringstream ss;
  84. ss << "| PATCH |" << std::endl;
  85. Logging::Log(Logging::Severity::Info, ss.str());
  86. request.Method(HttpRequest::Method::PATCH);
  87. return Execute(client, request);
  88. }
  89. // -----
  90. bool TestHttpClientNone(HttpClient& client, HttpRequest& request)
  91. {
  92. std::stringstream ss;
  93. ss << "| None |" << std::endl;
  94. Logging::Log(Logging::Severity::Info, ss.str());
  95. request.ReturnType(HttpRequest::ReturnType::Code);
  96. return Execute(client, request);
  97. }
  98. bool TestHttpClientCode(HttpClient& client, HttpRequest& request)
  99. {
  100. std::stringstream ss;
  101. ss << "| Code |" << std::endl;
  102. Logging::Log(Logging::Severity::Info, ss.str());
  103. request.ReturnType(HttpRequest::ReturnType::Code);
  104. return Execute(client, request);
  105. }
  106. bool TestHttpClientContent(HttpClient& client, HttpRequest& request)
  107. {
  108. std::stringstream ss;
  109. ss << "| Content |" << std::endl;
  110. Logging::Log(Logging::Severity::Info, ss.str());
  111. request.ReturnType(HttpRequest::ReturnType::Content);
  112. return Execute(client, request);
  113. }
  114. bool TestHttpClientRedirect(HttpClient& client, HttpRequest& request)
  115. {
  116. std::stringstream ss;
  117. ss << "| Redirect |";
  118. Logging::Log(Logging::Severity::Info, ss.str());
  119. request.ReturnType(HttpRequest::ReturnType::Redirect);
  120. return Execute(client, request);
  121. }
  122. // -----
  123. bool TestHttpClient()
  124. {
  125. std::stringstream ss;
  126. ss << "----------------------------------" << std::endl;
  127. ss << "| TestHttpClient |" << std::endl;
  128. ss << "----------------------------------" << std::endl;
  129. Logging::Log(Logging::Severity::Info, ss.str());
  130. HttpClient client;
  131. HttpRequest request("http://nginx.dierkse.nl");
  132. bool success = true;
  133. request.ReturnType(HttpRequest::ReturnType::Code);
  134. success = TestHttpClientGet(client, request) && success;
  135. success = TestHttpClientHead(client, request) && success;
  136. success = TestHttpClientPost(client, request) && success;
  137. success = TestHttpClientPut(client, request) && success;
  138. success = TestHttpClientDelete(client, request) && success;
  139. success = TestHttpClientConnect(client, request) && success;
  140. success = TestHttpClientTrace(client, request) && success;
  141. success = TestHttpClientPatch(client, request) && success;
  142. ss.str("");
  143. ss << "----------------------------------" << std::endl;
  144. Logging::Log(Logging::Severity::Info, ss.str());
  145. request.Method(HttpRequest::Method::GET);
  146. success = TestHttpClientNone(client, request) && success;
  147. success = TestHttpClientCode(client, request) && success;
  148. success = TestHttpClientContent(client, request) && success;
  149. success = TestHttpClientRedirect(client, request) && success;
  150. ss.str("");
  151. ss << "==================================" << std::endl << std::endl;
  152. Logging::Log(Logging::Severity::Info, ss.str());
  153. return success;
  154. }
  155. } // namespace Test
  156. } // namespace Http