diff --git a/sandbox/server/main.cpp b/sandbox/server/main.cpp new file mode 100644 index 0000000..2bc5720 --- /dev/null +++ b/sandbox/server/main.cpp @@ -0,0 +1,11 @@ +#include "commun.h" +#include "http/http_server.h" + +int main() +{ + http_server(); + return 0; +} + + + diff --git a/sandbox/server/server.cpp b/sandbox/server/server.cpp deleted file mode 100644 index 2099cf8..0000000 --- a/sandbox/server/server.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include "../commun.h" - -using namespace Bk::Net; - -enum class HttpMethod -{ - NONE = 0, - GET = 1, - POST = 2, - PUT = 3, - DELETE = 4, -}; - -void http_server(); -std::string http_handler(Socket& sock, Connection conn); -void http_parser(std::string req); -HttpMethod resolve_methode(std::string method); -std::unique_ptr> string_split(std::string s, std::string delimiter); -std::string string_trim(const std::string& str, const std::string& whitespace = " "); - -int main() -{ - http_server(); - return 0; -} - -void http_server() -{ - IpAddress ip("127.0.0.1"); - Socket sock(ip, PORT, IpProtocol::TCP); - bool running = sock.init() && sock.start(5); - - auto trimed_str = string_trim(std::string(" Hello ")); - log(trimed_str) - while (running) - { - Connection conn = sock.ack(); - if (conn >= 0) - { - std::string http_request(http_handler(sock, conn)); - http_parser(http_request); - } - } - -} - -std::string http_handler(Socket& sock, Connection conn) -{ - Packet req; - bool reading = true; - while(reading) - { - std::vector raw_data; - raw_data = sock.recv(conn, 4); - reading = req.append_data(raw_data); - } - - close(conn); - - int req_size = req.size(); - std::unique_ptr req_test = req.pull(req_size); - - if (req_size) return std::string(req_test.release(), req_size); - return ""; -} - -void http_parser(std::string req) -{ - auto lines = string_split(req, "\r\n"); - for (auto line : *lines) - { - auto param = string_split(line, ":"); - - } - -} - - -HttpMethod resolve_methode(std::string method) -{ - if (method == "GET") return HttpMethod::GET; - else if (method == "POST") return HttpMethod::POST; - else if (method == "PUT") return HttpMethod::PUT; - else if (method == "DELETE") return HttpMethod::DELETE; - else return HttpMethod::NONE; -} - -std::unique_ptr> string_split(std::string s, std::string delimiter) -{ - std::unique_ptr> splits(new std::vector(0)); - size_t pos = 0; - while ((pos = s.find(delimiter)) != std::string::npos) { - splits->push_back(s.substr(0, pos)); - s.erase(0, pos + delimiter.length()); - } - splits->push_back(s); - return splits; -} - -std::string string_trim(const std::string& str, const std::string& whitespace) -{ - const auto strBegin = str.find_first_not_of(whitespace); - if (strBegin == std::string::npos) - return ""; // no content - - const auto strEnd = str.find_last_not_of(whitespace); - const auto strRange = strEnd - strBegin + 1; - - return str.substr(strBegin, strRange); -} \ No newline at end of file