fork(1) download
  1. #include <string>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5.  
  6. class HttpRequest {
  7. public:
  8. enum http_methods {GET, POST};
  9.  
  10. private:
  11. http_methods method;
  12. std::string URI, version;
  13. std::vector<std::string> Methods;
  14. int status;
  15. HttpRequest();
  16. public:
  17. HttpRequest(http_methods, std::string,std::string);
  18. HttpRequest(std::string);
  19.  
  20. void print() const;
  21. };
  22.  
  23.  
  24.  
  25. HttpRequest::HttpRequest(http_methods method, std::string URI, std::string version):
  26. method(method),
  27. URI(URI),
  28. version(version),
  29. Methods{"GET", "POST"},
  30. status(0)
  31. {}
  32.  
  33.  
  34. HttpRequest::HttpRequest(){}
  35.  
  36. HttpRequest::HttpRequest(std::string raw)
  37. {
  38. //First space
  39. std::size_t pos = raw.find(" ");
  40. if(pos == std::string::npos)
  41. {
  42. status = 1;
  43. return;
  44. }
  45.  
  46. //Method
  47. std::string str_method = raw.substr(0, pos);
  48. std::cout<<raw<<" "<<str_method<<std::endl;
  49. if(str_method == "GET")
  50. this->method = GET;
  51. else if(str_method == "POST")
  52. this->method = POST;
  53. else
  54. {
  55. status = 2;
  56. return;
  57. }
  58.  
  59. //Second space
  60. std::size_t pos2 = raw.find(" ",pos+1);
  61. if(pos == std::string::npos)
  62. {
  63. status = 3;
  64. return;
  65. }
  66. URI = raw.substr(pos+1, pos2-pos);
  67. version = raw.substr(pos2+1);
  68. }
  69.  
  70. void HttpRequest::print() const
  71. {
  72. std::cout<<"Status:\t\t"<<status<<'\n';
  73. std::cout<<"Method:\t\t"<<(method)<<'\n';
  74. std::cout<<"URI:\t\t"<<URI<<'\n';
  75. std::cout<<"Version:\t"<<version<<std::endl;
  76. }
  77.  
  78.  
  79. int main()
  80. {
  81.  
  82. HttpRequest req("POST / HTTP/1.1");
  83. req.print();
  84. return 0;
  85. }
  86.  
  87.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
POST / HTTP/1.1 POST
Status:		134518482
Method:		1
URI:		/ 
Version:	HTTP/1.1