]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
server : add request path option(#1741)
authorEmmanuel Schmidbauer <redacted>
Mon, 8 Jan 2024 22:39:51 +0000 (17:39 -0500)
committerGitHub <redacted>
Mon, 8 Jan 2024 22:39:51 +0000 (22:39 +0000)
examples/server/server.cpp

index a582f17e273d16c17e2b6ce5f8e358f1bd802289..71c54acacd7a792d8c33f7cb2177b50c9d178435 100644 (file)
@@ -40,6 +40,7 @@ struct server_params
 {
     std::string hostname = "127.0.0.1";
     std::string public_path = "examples/server/public";
+    std::string request_path = "";
 
     int32_t port          = 8080;
     int32_t read_timeout  = 600;
@@ -161,6 +162,7 @@ void whisper_print_usage(int /*argc*/, char ** argv, const whisper_params & para
     fprintf(stderr, "  --host HOST,                   [%-7s] Hostname/ip-adress for the server\n", sparams.hostname.c_str());
     fprintf(stderr, "  --port PORT,                   [%-7d] Port number for the server\n", sparams.port);
     fprintf(stderr, "  --public PATH,                 [%-7s] Path to the public folder\n", sparams.public_path.c_str());
+    fprintf(stderr, "  --request-path PATH,           [%-7s] Request path for all requests\n", sparams.request_path.c_str());
     fprintf(stderr, "  --convert,                     [%-7s] Convert audio to WAV, requires ffmpeg on the server", sparams.ffmpeg_converter ? "true" : "false");
     fprintf(stderr, "\n");
 }
@@ -208,6 +210,7 @@ bool whisper_params_parse(int argc, char ** argv, whisper_params & params, serve
         else if (                  arg == "--port")            { sparams.port        = std::stoi(argv[++i]); }
         else if (                  arg == "--host")            { sparams.hostname    = argv[++i]; }
         else if (                  arg == "--public")          { sparams.public_path = argv[++i]; }
+        else if (                  arg == "--request-path")    { sparams.request_path = argv[++i]; }
         else if (                  arg == "--convert")         { sparams.ffmpeg_converter     = true; }
         else {
             fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
@@ -480,12 +483,12 @@ int main(int argc, char ** argv) {
     std::string const default_content = "<html>hello</html>";
 
     // this is only called if no index.html is found in the public --path
-    svr.Get("/", [&default_content](const Request &, Response &res){
+    svr.Get(sparams.request_path + "/", [&default_content](const Request &, Response &res){
         res.set_content(default_content, "text/html");
         return false;
     });
 
-    svr.Post("/inference", [&](const Request &req, Response &res){
+    svr.Post(sparams.request_path + "/inference", [&](const Request &req, Response &res){
         // acquire whisper model mutex lock
         whisper_mutex.lock();
 
@@ -722,7 +725,7 @@ int main(int argc, char ** argv) {
         // return whisper model mutex lock
         whisper_mutex.unlock();
     });
-    svr.Post("/load", [&](const Request &req, Response &res){
+    svr.Post(sparams.request_path + "/load", [&](const Request &req, Response &res){
         whisper_mutex.lock();
         if (!req.has_file("model"))
         {
@@ -778,11 +781,11 @@ int main(int argc, char ** argv) {
         res.status = 500;
     });
 
-    svr.set_error_handler([](const Request &, Response &res) {
+    svr.set_error_handler([](const Request &req, Response &res) {
         if (res.status == 400) {
             res.set_content("Invalid request", "text/plain");
         } else if (res.status != 500) {
-            res.set_content("File Not Found", "text/plain");
+            res.set_content("File Not Found (" + req.path + ")", "text/plain");
             res.status = 404;
         }
     });