## UWeb
Class WebResponse

source: C:\XIII\UWeb\Classes\WebResponse.uc

    Core.Object
       |
       +--UWeb.WebResponse

Direct Known Subclasses:None

class WebResponse
extends Core.Object

Variables
`WebConnection` | `Connection` TMap!
`string` | `IncludePath` TMap!
`int` | `ReplacementMap[5]` TMap!
`bool` | `bSentResponse` used to warn headers already sent
`bool` | `bSentText` used to warn headers already sent

Function Summary
`void` | `ClearSubst()`
`void` | `FailAuthentication(string Realm)`
`void` | `HTTPError(int ErrorNum, optional string)`
`void` | `HTTPHeader(string Header)`
`void` | `HTTPResponse(string Header)`
`void` | `IncludeBinaryFile(string Filename)`
`void` | `IncludeUHTM(string Filename)`
`void` | `Redirect(string URL)`
`void` | `SendStandardHeaders(optional string)`
`void` | `Subst(string Variable, string Value, optional bool)`
    // uhtm including

Source Code

    00001	class WebResponse extends Object
    00002		native
    00003		noexport;
    00004
    00005	var private native const int ReplacementMap[5];	// TMap<FString, FString>!
    00006	var const config string IncludePath;
    00007	var WebConnection Connection;
    00008	var bool bSentText; // used to warn headers already sent
    00009	var bool bSentResponse;
    00010
    00011	// uhtm including
    00012	native final function Subst(string Variable, string Value, optional bool bClear);
    00013	native final function ClearSubst();
    00014	native final function IncludeUHTM(string Filename);
    00015	native final function IncludeBinaryFile(string Filename);
    00016
    00017	event SendText(string Text, optional bool bNoCRLF)
    00018	{
    00019		if(!bSentText)
    00020		{
    00021			SendStandardHeaders();
    00022			bSentText = True;
    00023		}
    00024
    00025		if(bNoCRLF)
    00026			Connection.SendText(Text);
    00027		else
    00028			Connection.SendText(Text$Chr(13)$Chr(10));
    00029	}
    00030
    00031	event SendBinary(int Count, byte B[255])
    00032	{
    00033		Connection.SendBinary(Count, B);
    00034	}
    00035
    00036	function FailAuthentication(string Realm)
    00037	{
    00038		HTTPError(401, Realm);
    00039	}
    00040
    00041	function HTTPResponse(string Header)
    00042	{
    00043		HTTPHeader(Header);
    00044		bSentResponse = True;
    00045	}
    00046
    00047	function HTTPHeader(string Header)
    00048	{
    00049		if(bSentText)
    00050			Log("Can't send headers - already called SendText()");
    00051
    00052		Connection.SendText(Header$Chr(13)$Chr(10));
    00053	}
    00054
    00055	function HTTPError(int ErrorNum, optional string Data)
    00056	{
    00057		switch(ErrorNum)
    00058		{
    00059		case 400:
    00060			HTTPResponse("HTTP/1.1 400 Bad Request");
    00061			SendText("<TITLE>400 Bad Request</TITLE><H1>400 Bad Request</H1>If you got this error from a standard web browser, please mail jack@epicgames.com and submit a bug report.");
    00062			break;
    00063		case 401:
    00064			HTTPResponse("HTTP/1.1 401 Unauthorized");
    00065			HTTPHeader("WWW-authenticate: basic realm=\""$Data$"\"");
    00066			SendText("<TITLE>401 Unauthorized</TITLE><H1>401 Unauthorized</H1>");
    00067			break;
    00068		case 404:
    00069			HTTPResponse("HTTP/1.1 404 Object Not Found");
    00070			SendText("<TITLE>404 File Not Found</TITLE><H1>404 File Not Found</H1>The URL you requested was not found.");
    00071			break;
    00072		default:
    00073			break;
    00074		}
    00075	}
    00076
    00077	function SendStandardHeaders( optional string ContentType )
    00078	{
    00079		if(ContentType == "")
    00080			ContentType = "text/html";
    00081		if(!bSentResponse)
    00082			HTTPResponse("HTTP/1.1 200 OK");
    00083		HTTPHeader("Server: UnrealEngine UWeb Web Server Build "$Connection.Level.EngineVersion);
    00084		HTTPHeader("Content-Type: "$ContentType);
    00085		HTTPHeader("");
    00086	}
    00087
    00088	function Redirect(string URL)
    00089	{
    00090		HTTPResponse("HTTP/1.1 302 Document Moved");
    00091		HTTPHeader("Location: "$URL);
    00092		SendText("<head><title>Document Moved</title></head>");
    00093		SendText("<body><h1>Object Moved</h1>This document may be found <a HREF=\""$URL$"\">here</a>.");
    00094	}
    00095
    00096
    00097	defaultproperties
    00098	{
    00099	     IncludePath="../Web"
    00100	}

End Source Code