1
0

Added URL member to the HTTPRequest API class.

This commit is contained in:
Mattes D 2015-04-21 10:54:43 +02:00
parent be4ac22b52
commit de27f66b59
4 changed files with 62 additions and 43 deletions

View File

@ -2171,15 +2171,6 @@ local CompressedString = cStringCompression.CompressStringGZIP("DataToCompress")
Inherits = "cEntity", Inherits = "cEntity",
}, },
cWebAdmin =
{
Desc = "",
Functions =
{
GetHTMLEscapedString = { Params = "string", Return = "string", Notes = "Gets the HTML escaped representation of a requested string. This is useful for user input and game data that is not guaranteed to be escaped already." },
},
}, -- cWebAdmin
cWebPlugin = cWebPlugin =
{ {
Desc = "", Desc = "",
@ -2502,39 +2493,6 @@ World:ForEachEntity(
}, -- AdditionalInfo }, -- AdditionalInfo
}, -- cWorld }, -- cWorld
HTTPFormData =
{
Desc = "This class stores data for one form element for a {{HTTPRequest|HTTP request}}.",
Variables =
{
Name = { Type = "string", Notes = "Name of the form element" },
Type = { Type = "string", Notes = "Type of the data (usually empty)" },
Value = { Type = "string", Notes = "Value of the form element. Contains the raw data as sent by the browser." },
},
}, -- HTTPFormData
HTTPRequest =
{
Desc = [[
This class encapsulates all the data that is sent to the WebAdmin through one HTTP request. Plugins
receive this class as a parameter to the function handling the web requests, as registered in the
FIXME: {{cPluginLua}}:AddWebPage().
]],
Constants =
{
FormData = { Notes = "Array-table of {{HTTPFormData}}, contains the values of individual form elements submitted by the client" },
Params = { Notes = "Map-table of parameters given to the request in the URL (?param=value); if a form uses GET method, this is the same as FormData. For each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value." },
PostParams = { Notes = "Map-table of data posted through a FORM - either a GET or POST method. Logically the same as FormData, but in a map-table format (for each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value)." },
},
Variables =
{
Method = { Type = "string", Notes = "The HTTP method used to make the request. Usually GET or POST." },
Path = { Type = "string", Notes = "The Path part of the URL (excluding the parameters)" },
Username = { Type = "string", Notes = "Name of the logged-in user." },
},
}, -- HTTPRequest
ItemCategory = ItemCategory =
{ {
Desc = [[ Desc = [[

View File

@ -0,0 +1,51 @@
return
{
cWebAdmin =
{
Desc = "",
Functions =
{
GetHTMLEscapedString = { Params = "string", Return = "string", Notes = "(STATIC) Gets the HTML-escaped representation of a requested string. This is useful for user input and game data that is not guaranteed to be escaped already." },
},
}, -- cWebAdmin
HTTPFormData =
{
Desc = "This class stores data for one form element for a {{HTTPRequest|HTTP request}}.",
Variables =
{
Name = { Type = "string", Notes = "Name of the form element" },
Type = { Type = "string", Notes = "Type of the data (usually empty)" },
Value = { Type = "string", Notes = "Value of the form element. Contains the raw data as sent by the browser." },
},
}, -- HTTPFormData
HTTPRequest =
{
Desc = [[
This class encapsulates all the data that is sent to the WebAdmin through one HTTP request. Plugins
receive this class as a parameter to the function handling the web requests, as registered in the
{{cPluginLua}}:AddWebPage().
]],
Constants =
{
FormData = { Notes = "Array-table of {{HTTPFormData}}, contains the values of individual form elements submitted by the client" },
Params = { Notes = "Map-table of parameters given to the request in the URL (?param=value); if a form uses GET method, this is the same as FormData. For each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value." },
PostParams = { Notes = "Map-table of data posted through a FORM - either a GET or POST method. Logically the same as FormData, but in a map-table format (for each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value)." },
},
Variables =
{
Method = { Type = "string", Notes = "The HTTP method used to make the request. Usually GET or POST." },
Path = { Type = "string", Notes = "The Path part of the URL (excluding the parameters)" },
URL = { Type = "string", Notes = "The entire URL used for the request." },
Username = { Type = "string", Notes = "Name of the logged-in user." },
},
}, -- HTTPRequest
}

View File

@ -234,7 +234,7 @@ void cWebAdmin::HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPReque
bool ShouldWrapInTemplate = ((BareURL.length() > 1) && (BareURL[1] != '~')); bool ShouldWrapInTemplate = ((BareURL.length() > 1) && (BareURL[1] != '~'));
// Retrieve the request data: // Retrieve the request data:
cWebadminRequestData * Data = (cWebadminRequestData *)(a_Request.GetUserData()); cWebadminRequestData * Data = reinterpret_cast<cWebadminRequestData *>(a_Request.GetUserData());
if (Data == nullptr) if (Data == nullptr)
{ {
a_Connection.SendStatusAndReason(500, "Bad UserData"); a_Connection.SendStatusAndReason(500, "Bad UserData");
@ -244,6 +244,7 @@ void cWebAdmin::HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPReque
// Wrap it all up for the Lua call: // Wrap it all up for the Lua call:
AString Template; AString Template;
HTTPTemplateRequest TemplateRequest; HTTPTemplateRequest TemplateRequest;
TemplateRequest.Request.URL = a_Request.GetURL();
TemplateRequest.Request.Username = a_Request.GetAuthUsername(); TemplateRequest.Request.Username = a_Request.GetAuthUsername();
TemplateRequest.Request.Method = a_Request.GetMethod(); TemplateRequest.Request.Method = a_Request.GetMethod();
TemplateRequest.Request.Path = BareURL.substr(1); TemplateRequest.Request.Path = BareURL.substr(1);

View File

@ -50,9 +50,18 @@ struct HTTPRequest
typedef std::map< std::string, std::string > StringStringMap; typedef std::map< std::string, std::string > StringStringMap;
typedef std::map< std::string, HTTPFormData > FormDataMap; typedef std::map< std::string, HTTPFormData > FormDataMap;
/** The entire URL presented to the HTTP server. */
AString URL;
/** HTTP method used for the request ("GET", "POST" etc.) */
AString Method; AString Method;
/** The Path part of the request's URL (excluding GET params). */
AString Path; AString Path;
/** Name of the logged-in user. Empty if not logged in. */
AString Username; AString Username;
// tolua_end // tolua_end
/** Parameters given in the URL, after the questionmark */ /** Parameters given in the URL, after the questionmark */