From cd45a258d6a76672c908c55491fd4edab3d11e62 Mon Sep 17 00:00:00 2001 From: xx Date: Sun, 9 Jun 2024 23:30:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4token=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=8E=B7=E5=8F=96=E6=96=87=E4=BB=B6=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=B8=8E=E4=BF=9D=E5=AD=98=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/module/http/request.cpp | 35 +++++++++++++++++++++++++++++------ src/module/http/request.h | 18 +++++++++++++----- 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/src/module/http/request.cpp b/src/module/http/request.cpp index f58a6c0..f582b27 100644 --- a/src/module/http/request.cpp +++ b/src/module/http/request.cpp @@ -9,10 +9,6 @@ module::request::~request() if (m_session != nullptr) delete m_session; } -std::string module::request::token() -{ - return m_request->token(); -} module::session* module::request::session(const std::string& token) { if (m_session == nullptr) @@ -45,6 +41,32 @@ void* module::request::website() { return m_request->website(); } +sol::table module::request::files(sol::this_state s) +{ + auto names = m_request->parser()->form()->names(); + sol::state_view lua(s); + sol::table result_table = lua.create_table(); + + int count = 1; + for (size_t i = 0; i < names.size(); i++) + { + sol::table file = lua.create_table(); + network::http::form_info fi; + if (m_request->parser()->form()->get(names[i], fi)) + { + file["type"] = fi.content_type; + file["size"] = fi.data.size(); + file["filename"] = fi.filename; + result_table[count] = file; + count++; + } + } + return result_table; +} +bool module::request::write_file(const std::string& name, const std::string& filepath) +{ + return m_request->parser()->form()->write_file(name,filepath); +} void module::request::regist(sol::state* lua) { // 绑定 Request 类到 Lua @@ -57,10 +79,11 @@ void module::request::regist(sol::state* lua) "remote_port", &module::request::remote_port, "param", &module::request::param, "session", &module::request::session, - "token", &module::request::token, "body_param", &module::request::body_param, "url_param", &module::request::url_param, - "body", &module::request::body + "body", &module::request::body, + "files", &module::request::files, + "write_file", &module::request::write_file ); (*lua)["GET"] = (int)network::http::GET; (*lua)["POST"] = (int)network::http::POST; diff --git a/src/module/http/request.h b/src/module/http/request.h index c07013e..57465dd 100644 --- a/src/module/http/request.h +++ b/src/module/http/request.h @@ -52,11 +52,6 @@ namespace module /// ushort remote_port(); /// - /// 取token - /// - /// - std::string token(); - /// /// 取session /// /// @@ -85,6 +80,19 @@ namespace module /// void* website(); + /// + /// 取文件列表 + /// + /// + sol::table files(sol::this_state s); + /// + /// 保存文件 + /// + /// + /// + /// + bool write_file(const std::string& name,const std::string& filepath); + static void regist(sol::state* lua); private: bool request_param(const std::string& name, std::string& value);