Now post and get parameters can be set / changed in requests from scripts aswell.

This commit is contained in:
Relintai 2023-03-22 13:20:25 +01:00
parent 23d01a29ce
commit 3fccbc6d23
6 changed files with 58 additions and 13 deletions

View File

@ -86,6 +86,13 @@ String SimpleWebServerRequest::get_get_parameter(const String &key) const {
return _get_parameters[key];
}
void SimpleWebServerRequest::set_post_parameter(const String &key, const String &value) {
_post_parameters[key] = value;
}
void SimpleWebServerRequest::set_get_parameter(const String &key, const String &value) {
_get_parameters[key] = value;
}
void SimpleWebServerRequest::send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code) {
ERR_FAIL_COND(!_server);

View File

@ -38,6 +38,9 @@ public:
virtual String get_post_parameter(const String &key) const;
virtual String get_get_parameter(const String &key) const;
virtual void set_post_parameter(const String &key, const String &value);
virtual void set_get_parameter(const String &key, const String &value);
virtual void send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code = HTTPServerEnums::HTTP_STATUS_CODE_302_FOUND);
virtual void send();
virtual void send_file(const String &p_file_path);

View File

@ -213,6 +213,11 @@ String WebServerRequest::get_get_parameter(const String &key) const {
return "";
}
void WebServerRequest::set_post_parameter(const String &key, const String &value) {
}
void WebServerRequest::set_get_parameter(const String &key, const String &value) {
}
HTTPServerEnums::HTTPStatusCode WebServerRequest::get_status_code() const {
return _status_code;
}
@ -556,6 +561,9 @@ void WebServerRequest::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_post_parameter", "key"), &WebServerRequest::get_post_parameter);
ClassDB::bind_method(D_METHOD("get_get_parameter", "key"), &WebServerRequest::get_get_parameter);
ClassDB::bind_method(D_METHOD("set_post_parameter", "key", "value"), &WebServerRequest::set_post_parameter);
ClassDB::bind_method(D_METHOD("set_get_parameter", "key", "value"), &WebServerRequest::set_get_parameter);
ClassDB::bind_method(D_METHOD("get_status_code"), &WebServerRequest::get_status_code);
ClassDB::bind_method(D_METHOD("set_status_code", "val"), &WebServerRequest::set_status_code);
ADD_PROPERTY(PropertyInfo(Variant::INT, "status_code"), "set_status_code", "get_status_code");

View File

@ -81,6 +81,9 @@ public:
virtual String get_post_parameter(const String &key) const;
virtual String get_get_parameter(const String &key) const;
virtual void set_post_parameter(const String &key, const String &value);
virtual void set_get_parameter(const String &key, const String &value);
HTTPServerEnums::HTTPStatusCode get_status_code() const;
void set_status_code(const HTTPServerEnums::HTTPStatusCode status_code);

View File

@ -1,7 +1,7 @@
#include "web_server_request_scriptable.h"
#include "web_server.h"
#include "web_node.h"
#include "web_server.h"
String WebServerRequestScriptable::get_cookie(const String &key) {
return call("_get_cookie", key);
@ -47,6 +47,13 @@ String WebServerRequestScriptable::get_get_parameter(const String &key) const {
return const_cast<WebServerRequestScriptable *>(this)->call("_get_get_parameter", key);
}
void WebServerRequestScriptable::set_post_parameter(const String &key, const String &value) {
call("_set_post_parameter", key, value);
}
void WebServerRequestScriptable::set_get_parameter(const String &key, const String &value) {
call("_set_get_parameter", key, value);
}
void WebServerRequestScriptable::send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code) {
call("_send_redirect", location, status_code);
}
@ -130,6 +137,11 @@ String WebServerRequestScriptable::_get_get_parameter(const String &key) const {
return "";
}
void WebServerRequestScriptable::_set_post_parameter(const String &key, const String &value) {
}
void WebServerRequestScriptable::_set_get_parameter(const String &key, const String &value) {
}
void WebServerRequestScriptable::_send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code) {
}
@ -225,6 +237,9 @@ void WebServerRequestScriptable::_bind_methods() {
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_post_parameter", PropertyInfo(Variant::STRING, "key")));
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_get_parameter", PropertyInfo(Variant::STRING, "key")));
BIND_VMETHOD(MethodInfo("_set_post_parameter", PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::STRING, "value")));
BIND_VMETHOD(MethodInfo("_set_get_parameter", PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::STRING, "value")));
BIND_VMETHOD(MethodInfo("_send_redirect", PropertyInfo(Variant::STRING, "location"), PropertyInfo(Variant::INT, "status_code")));
BIND_VMETHOD(MethodInfo("_compile_body"));
@ -255,6 +270,9 @@ void WebServerRequestScriptable::_bind_methods() {
ClassDB::bind_method(D_METHOD("_get_post_parameter", "key"), &WebServerRequestScriptable::_get_post_parameter);
ClassDB::bind_method(D_METHOD("_get_get_parameter", "key"), &WebServerRequestScriptable::_get_get_parameter);
ClassDB::bind_method(D_METHOD("_set_post_parameter", "key", "value"), &WebServerRequestScriptable::_set_post_parameter);
ClassDB::bind_method(D_METHOD("_set_get_parameter", "key", "value"), &WebServerRequestScriptable::_set_get_parameter);
ClassDB::bind_method(D_METHOD("_send_redirect", "location", "status_code"), &WebServerRequestScriptable::_send_redirect);
ClassDB::bind_method(D_METHOD("_compile_body"), &WebServerRequestScriptable::_compile_body);

View File

@ -38,6 +38,9 @@ public:
virtual String get_post_parameter(const String &key) const;
virtual String get_get_parameter(const String &key) const;
virtual void set_post_parameter(const String &key, const String &value);
virtual void set_get_parameter(const String &key, const String &value);
virtual void send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code = HTTPServerEnums::HTTP_STATUS_CODE_302_FOUND);
virtual void compile_body();
virtual void compile_and_send_body();
@ -52,21 +55,24 @@ public:
virtual void update();
// script virtuals
String _get_cookie(const String &key);
virtual String _get_cookie(const String &key);
HTTPServerEnums::HTTPMethod _get_method() const;
virtual HTTPServerEnums::HTTPMethod _get_method() const;
void _parse_files();
int _get_file_count() const;
String _get_file_file_name(const int index) const;
String _get_file_key(const int index) const;
int _get_file_length(const int index) const;
PoolByteArray _get_file_data(const int index) const;
String _get_file_data_str(const int index) const;
virtual void _parse_files();
virtual int _get_file_count() const;
virtual String _get_file_file_name(const int index) const;
virtual String _get_file_key(const int index) const;
virtual int _get_file_length(const int index) const;
virtual PoolByteArray _get_file_data(const int index) const;
virtual String _get_file_data_str(const int index) const;
String _get_parameter(const String &key) const;
String _get_post_parameter(const String &key) const;
String _get_get_parameter(const String &key) const;
virtual String _get_parameter(const String &key) const;
virtual String _get_post_parameter(const String &key) const;
virtual String _get_get_parameter(const String &key) const;
virtual void _set_post_parameter(const String &key, const String &value);
virtual void _set_get_parameter(const String &key, const String &value);
void _send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code);
void _compile_body();