| Home Page | Recent Changes | Preferences

WebConnectionPlus

UT2003 :: Object >> Actor >> Info >> InternetInfo >> InternetLink >> TcpLink >> WebConnection >> WebConnectionPlus (Ladder1.46)

This functionality provided by this class (keeping the connection open after a query()) will be integrated into UT2003 as of the next patch, so this class will no longer be necessary.

00001  //-----------------------------------------------------------
00002  // Ladder.WebConnectionPlus
00003  //
00004  // Custom webconnection class to allow "hanging" webadmin queries
00005  // while waiting for profile to be imported from foreign web host
00006  //-----------------------------------------------------------
00007  class WebConnectionPlus extends WebConnection;
00008  
00009  var bool bNoCleanup;
00010  var bool bPostQueryApp;
00011  
00012  function EndOfHeaders()
00013  {
00014  
00015      if(Response == None)
00016      {
00017          CreateResponseObject();
00018          Response.HTTPError(400); // Bad Request
00019          Cleanup();
00020          return;
00021      }
00022  
00023      if(Application == None)
00024      {
00025          Response.HTTPError(404); // FNF
00026          Cleanup();
00027          return;
00028      }
00029  
00030      if(Request.ContentLength != 0 && Request.RequestType == Request_POST)
00031      {
00032          RawBytesExpecting = Request.ContentLength;
00033          RawBytesExpecting -= Len(ReceivedData);
00034          CheckRawBytes();
00035      }
00036      else
00037      {
00038          if (Application.PreQuery(Request, Response))
00039          {
00040              Application.Query(Request, Response);
00041              bPostQueryApp = True;
00042          }
00043          Cleanup();
00044      }
00045  }
00046  
00047  function CheckRawBytes()
00048  {
00049      if(RawBytesExpecting <= 0)
00050      {
00051          if(!(Request.ContentType ~= "application/x-www-form-urlencoded"))
00052          {
00053              Log("WebConnection: Unknown form data content-type: "$Request.ContentType);
00054              Response.HTTPError(400); // Can't deal with this type of form data
00055          }
00056          else
00057          {
00058              Request.DecodeFormData(ReceivedData);
00059              if (Application.PreQuery(Request, Response))
00060              {
00061                Application.Query(Request, Response);
00062                bPostQueryApp = True;
00063              }
00064              ReceivedData = "";
00065          }
00066          Cleanup();
00067      }
00068  }
00069  
00070  function Cleanup()
00071  {
00072      if (bNoCleanup)
00073          return;
00074  
00075      if (bPostQueryApp && Application != None)
00076      {
00077          Application.PostQuery(Request, Response);
00078          bPostQueryApp = False;
00079      }
00080  
00081      if(Request != None)
00082          Request = None;
00083  
00084      if(Response != None)
00085      {
00086          Response.Connection = None;
00087          Response = None;
00088      }
00089  
00090      if(Application != None)
00091          Application = None;
00092      Close();
00093  }

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In