From 6da4d74fc04bd5634ca4d6d0169fb30a38501b47 Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Tue, 6 Aug 2024 14:28:03 +0200 Subject: [PATCH] Wrap getParameter(name) --- src/HttpRequestWrapper.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/HttpRequestWrapper.h b/src/HttpRequestWrapper.h index d7663915..71869637 100644 --- a/src/HttpRequestWrapper.h +++ b/src/HttpRequestWrapper.h @@ -58,14 +58,25 @@ struct HttpRequestWrapper { } } - /* Takes int, returns string (must be in bounds) */ + /* Takes int or string, returns string (must be in bounds) */ template static void req_getParameter(const FunctionCallbackInfo &args) { Isolate *isolate = args.GetIsolate(); auto *req = getHttpRequest(args); if (req) { - int index = args[0]->Uint32Value(isolate->GetCurrentContext()).ToChecked(); - std::string_view parameter = req->getParameter(index); + + /* Either an integer index or string name */ + std::string_view parameter; + if (args[0]->IsNumber()) { + int index = args[0]->Uint32Value(isolate->GetCurrentContext()).ToChecked(); + parameter = req->getParameter(index); + } else { + NativeString data(args.GetIsolate(), args[0]); + if (data.isInvalid(args)) { + return; + } + parameter = req->getParameter(data.getString()); + } args.GetReturnValue().Set(String::NewFromUtf8(isolate, parameter.data(), NewStringType::kNormal, parameter.length()).ToLocalChecked()); }