| 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