From 802c94524f6dae0b0ee18ae48903ca37c33545f0 Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Mon, 3 Feb 2025 16:22:43 +0100 Subject: [PATCH 1/4] server : use httplib status codes This commit replaces the status code number with the httplib StatusCode enum values. The motivation for this change is to make the code a little more readable. --- examples/server/server.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index e0acc47059656..3d39f8d83413e 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -1047,35 +1047,35 @@ struct server_task_result_rerank : server_task_result { // this function maybe used outside of server_task_result_error static json format_error_response(const std::string & message, const enum error_type type) { std::string type_str; - int code = 500; + int code = httplib::StatusCode::InternalServerError_500; switch (type) { case ERROR_TYPE_INVALID_REQUEST: type_str = "invalid_request_error"; - code = 400; + code = httplib::StatusCode::BadRequest_400; break; case ERROR_TYPE_AUTHENTICATION: type_str = "authentication_error"; - code = 401; + code = httplib::StatusCode::Unauthorized_401; break; case ERROR_TYPE_NOT_FOUND: type_str = "not_found_error"; - code = 404; + code = httplib::StatusCode::NotFound_404; break; case ERROR_TYPE_SERVER: type_str = "server_error"; - code = 500; + code = httplib::StatusCode::InternalServerError_500; break; case ERROR_TYPE_PERMISSION: type_str = "permission_error"; - code = 403; + code = httplib::StatusCode::Forbidden_403; break; case ERROR_TYPE_NOT_SUPPORTED: type_str = "not_supported_error"; - code = 501; + code = httplib::StatusCode::NotImplemented_501; break; case ERROR_TYPE_UNAVAILABLE: type_str = "unavailable_error"; - code = 503; + code = httplib::StatusCode::ServiceUnavailable_503; break; } return json { @@ -3421,12 +3421,12 @@ int main(int argc, char ** argv) { auto res_error = [](httplib::Response & res, const json & error_data) { json final_response {{"error", error_data}}; res.set_content(safe_json_to_str(final_response), MIMETYPE_JSON); - res.status = json_value(error_data, "code", 500); + res.status = json_value(error_data, "code", httplib::InternalServerError_500); }; auto res_ok = [](httplib::Response & res, const json & data) { res.set_content(safe_json_to_str(data), MIMETYPE_JSON); - res.status = 200; + res.status = httplib::StatusCode::OK_200; }; svr->set_exception_handler([&res_error](const httplib::Request &, httplib::Response & res, const std::exception_ptr & ep) { @@ -3445,7 +3445,7 @@ int main(int argc, char ** argv) { }); svr->set_error_handler([&res_error](const httplib::Request &, httplib::Response & res) { - if (res.status == 404) { + if (res.status == httplib::StatusCode::NotFound_404) { res_error(res, format_error_response("File Not Found", ERROR_TYPE_NOT_FOUND)); } // for other error codes, we skip processing here because it's already done by res_error() @@ -3516,7 +3516,7 @@ int main(int argc, char ** argv) { auto tmp = string_split(req.path, '.'); if (req.path == "/" || tmp.back() == "html") { res.set_content(reinterpret_cast(loading_html), loading_html_len, "text/html; charset=utf-8"); - res.status = 503; + res.status = res.status == httplib::StatusCode::ServiceUnavailable_503; } else { res_error(res, format_error_response("Loading model", ERROR_TYPE_UNAVAILABLE)); } @@ -3692,7 +3692,7 @@ int main(int argc, char ** argv) { res.set_header("Process-Start-Time-Unix", std::to_string(res_metrics->t_start)); res.set_content(prometheus.str(), "text/plain; version=0.0.4"); - res.status = 200; // HTTP OK + res.status = httplib::StatusCode::OK_200; // HTTP OK }; const auto handle_slots_save = [&ctx_server, &res_error, &res_ok, ¶ms](const httplib::Request & req, httplib::Response & res, int id_slot) { @@ -4321,7 +4321,7 @@ int main(int argc, char ** argv) { }); } res_ok(res, result); - res.status = 200; // HTTP OK + res.status = httplib::StatusCode::OK_200; // HTTP OK }; const auto handle_lora_adapters_apply = [&](const httplib::Request & req, httplib::Response & res) { From 5e602e9152c60beaa195b893c3df3ef91668aa64 Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Mon, 3 Feb 2025 16:48:14 +0100 Subject: [PATCH 2/4] squash! server : use httplib status codes Revert changes of using httplib's StatusCode in format_error_response. --- examples/server/server.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index 3d39f8d83413e..4749b5df9a5f3 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -1051,31 +1051,31 @@ static json format_error_response(const std::string & message, const enum error_ switch (type) { case ERROR_TYPE_INVALID_REQUEST: type_str = "invalid_request_error"; - code = httplib::StatusCode::BadRequest_400; + code = 400; break; case ERROR_TYPE_AUTHENTICATION: type_str = "authentication_error"; - code = httplib::StatusCode::Unauthorized_401; + code = 401; break; case ERROR_TYPE_NOT_FOUND: type_str = "not_found_error"; - code = httplib::StatusCode::NotFound_404; + code = 404; break; case ERROR_TYPE_SERVER: type_str = "server_error"; - code = httplib::StatusCode::InternalServerError_500; + code = 500; break; case ERROR_TYPE_PERMISSION: type_str = "permission_error"; - code = httplib::StatusCode::Forbidden_403; + code = 403; break; case ERROR_TYPE_NOT_SUPPORTED: type_str = "not_supported_error"; - code = httplib::StatusCode::NotImplemented_501; + code = 501; break; case ERROR_TYPE_UNAVAILABLE: type_str = "unavailable_error"; - code = httplib::StatusCode::ServiceUnavailable_503; + code = 503; break; } return json { From 9779626803d4e445aa352232a8306f7124ef0a6f Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Tue, 4 Feb 2025 06:03:32 +0100 Subject: [PATCH 3/4] squash! server : use httplib status codes [no ci] Remove duplicate status code setting in server.cpp --- examples/server/server.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index 4749b5df9a5f3..d976651cb34f7 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -4321,7 +4321,6 @@ int main(int argc, char ** argv) { }); } res_ok(res, result); - res.status = httplib::StatusCode::OK_200; // HTTP OK }; const auto handle_lora_adapters_apply = [&](const httplib::Request & req, httplib::Response & res) { From bbf98f1c4d468ee2e31c942bb5cff649a650a2b6 Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Tue, 4 Feb 2025 06:04:23 +0100 Subject: [PATCH 4/4] squash! server : use httplib status codes Fix mistake when setting status code to 503. --- examples/server/server.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index d976651cb34f7..3e454aa673746 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -3516,7 +3516,7 @@ int main(int argc, char ** argv) { auto tmp = string_split(req.path, '.'); if (req.path == "/" || tmp.back() == "html") { res.set_content(reinterpret_cast(loading_html), loading_html_len, "text/html; charset=utf-8"); - res.status = res.status == httplib::StatusCode::ServiceUnavailable_503; + res.status = httplib::StatusCode::ServiceUnavailable_503; } else { res_error(res, format_error_response("Loading model", ERROR_TYPE_UNAVAILABLE)); }