From 616f1325846195cbac13e6729d71916a85c5e71f Mon Sep 17 00:00:00 2001 From: cflip Date: Thu, 7 Jul 2022 13:12:30 -0600 Subject: Reply with a different message and response code depending on language --- src/HttpResponse.cpp | 12 ++---------- src/HttpResponse.h | 10 +++++++--- src/main.cpp | 10 ++++++++-- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/HttpResponse.cpp b/src/HttpResponse.cpp index d696e03..a9ebbab 100644 --- a/src/HttpResponse.cpp +++ b/src/HttpResponse.cpp @@ -7,19 +7,11 @@ static std::string status_code_string(HttpStatusCode status_code) switch (status_code) { case HttpStatusCode::OK: return "200 OK"; + case HttpStatusCode::Forbidden: + return "403 Forbidden"; } } -HttpResponse::HttpResponse(HttpStatusCode status_code) - : m_status_code(status_code) -{ -} - -void HttpResponse::add_header(const std::string& header, const std::string& value) -{ - m_headers[header] = value; -} - std::string HttpResponse::to_string() const { std::stringstream string_stream; diff --git a/src/HttpResponse.h b/src/HttpResponse.h index 8a1d2d4..c1d9762 100644 --- a/src/HttpResponse.h +++ b/src/HttpResponse.h @@ -4,14 +4,18 @@ #include enum class HttpStatusCode { - OK = 200 + OK = 200, + Forbidden = 403 }; class HttpResponse { public: - HttpResponse(HttpStatusCode status_code); + void add_header(const std::string& header, const std::string& value) + { + m_headers[header] = value; + } - void add_header(const std::string& header, const std::string& value); + void set_status_code(HttpStatusCode status_code) { m_status_code = status_code; } void set_content(const std::string& content) { m_content = content; } std::string to_string() const; diff --git a/src/main.cpp b/src/main.cpp index 5e92815..25fb548 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -16,9 +16,15 @@ int main(int argc, char** argv) ClientConnection client = server.accept_client_connection(); HttpRequest request = client.read_request(); - HttpResponse response(HttpStatusCode::OK); + HttpResponse response; response.add_header("Server", "cfws"); - response.set_content("Welcome to the page."); + if (request.header("Accept-Language").find("zh") == std::string::npos) { + response.set_status_code(HttpStatusCode::Forbidden); + response.set_content("Please set your language to Chinese to access this page."); + } else { + response.set_status_code(HttpStatusCode::OK); + response.set_content("Welcome to the page."); + } client.send(response); client.close_connection(); -- cgit v1.2.3