summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcflip <cflip@cflip.net>2022-07-07 13:12:30 -0600
committercflip <cflip@cflip.net>2022-07-07 13:12:30 -0600
commit616f1325846195cbac13e6729d71916a85c5e71f (patch)
treeb58baad3f7d28fe4301e472fad3130a57b3bc49d
parentc2cc2e5c759863229ce9d48d014243f6e7260353 (diff)
Reply with a different message and response code depending on language
-rw-r--r--src/HttpResponse.cpp12
-rw-r--r--src/HttpResponse.h10
-rw-r--r--src/main.cpp10
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 <string>
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();