# PHTTPResource Class Reference

This object describes a HyperText Transport Protocol resource. More...

`#include <http.h>`

Inheritance diagram for PHTTPResource:

List of all members.

## Public Member Functions

virtual | ~PHTTPResource ()
const PURL & | GetURL () const
| Get the URL for this resource.
const PString & | GetContentType () const
| Get the current content type for the resource.
PHTTPAuthority * | GetAuthority () const
| Get the current authority for the resource.
void | SetAuthority (const PHTTPAuthority &auth)
| Set the current authority for the resource.
void | ClearAuthority ()
| Set the current authority for the resource to unrestricted.
DWORD | GetHitCount () const
| Get the current hit count for the resource.
void | ClearHitCount ()
virtual PBoolean | OnGET (PHTTPServer &server, const PURL &url, const PMIMEInfo &info, const PHTTPConnectionInfo &conInfo)
| Handle the GET command passed from the HTTP socket.
virtual PBoolean | OnGETData (PHTTPServer &server, const PURL &url, const PHTTPConnectionInfo &connectInfo, PHTTPRequest &request)
| Send the data associated with a GET command.
virtual PBoolean | OnHEAD (PHTTPServer &server, const PURL &url, const PMIMEInfo &info, const PHTTPConnectionInfo &conInfo)
| Handle the HEAD command passed from the HTTP socket.
virtual PBoolean | OnPOST (PHTTPServer &server, const PURL &url, const PMIMEInfo &info, const PStringToString &data, const PHTTPConnectionInfo &conInfo)
| Handle the POST command passed from the HTTP socket.
virtual PBoolean | OnPOSTData (PHTTPRequest &request, const PStringToString &data)
| Send the data associated with a POST command.
virtual PBoolean | IsModifiedSince (const PTime &when)
| Check to see if the resource has been modified since the date specified.
virtual PBoolean | GetExpirationDate (PTime &when)
| Get a block of data (eg HTML) that the resource contains.
virtual PHTTPRequest * | CreateRequest (const PURL &url, const PMIMEInfo &inMIME, const PMultiPartList &multipartFormInfo, PHTTPServer &socket)
| Create a new request block for this type of resource.
virtual PBoolean | LoadHeaders (PHTTPRequest &request)=0
| Get the headers for block of data (eg HTML) that the resource contains.
virtual void | SendData (PHTTPRequest &request)
| Send the data associated with a command.
virtual PBoolean | LoadData (PHTTPRequest &request, PCharArray &data)
| Get a block of data that the resource contains.
virtual PString | LoadText (PHTTPRequest &request)
| Get a block of text data (eg HTML) that the resource contains.
virtual void | OnLoadedText (PHTTPRequest &request, PString &text)
| This is called after the text has been loaded and may be used to customise or otherwise mangle a loaded piece of text.
virtual PBoolean | Post (PHTTPRequest &request, const PStringToString &data, PHTML &replyMessage)
| Get a block of data (eg HTML) that the resource contains.

## Protected Member Functions

| PHTTPResource (const PURL &url)
| PHTTPResource (const PURL &url, const PHTTPAuthority &auth)
| PHTTPResource (const PURL &url, const PString &contentType)
| PHTTPResource (const PURL &url, const PString &contentType, const PHTTPAuthority &auth)
virtual PBoolean | CheckAuthority (PHTTPServer &server, const PHTTPRequest &request, const PHTTPConnectionInfo &conInfo)
| See if the resource is authorised given the mime info.
virtual PBoolean | OnGETOrHEAD (PHTTPServer &server, const PURL &url, const PMIMEInfo &info, const PHTTPConnectionInfo &conInfo, PBoolean isGet)
| common code for GET and HEAD commands

## Static Protected Member Functions

static PBoolean | CheckAuthority (PHTTPAuthority &authority, PHTTPServer &server, const PHTTPRequest &request, const PHTTPConnectionInfo &connectInfo)

## Protected Attributes

PURL | baseURL
| Base URL for the resource, may accept URLS with a longer hierarchy.
PString | contentType
| MIME content type for the resource.
PHTTPAuthority * | authority
| Authorisation method for the resource.
volatile DWORD | hitCount
| COunt of number of times resource was accessed.

## Detailed Description

This object describes a HyperText Transport Protocol resource.

A tree of these resources are available to the `PHTTPServer` class.

## Constructor & Destructor Documentation

PHTTPResource::PHTTPResource | ( | const PURL & | url | ) | `[protected]`

Parameters:

  url | Name of the resource in URL space.

PHTTPResource::PHTTPResource | ( | const PURL & | url,
|  | const PHTTPAuthority & | auth |
| ) |  |  | `[protected]`

Parameters:

  url | Name of the resource in URL space.
  auth | Authorisation for the resource.

PHTTPResource::PHTTPResource | ( | const PURL & | url,
|  | const PString & | contentType |
| ) |  |  | `[protected]`

Parameters:

  url | Name of the resource in URL space.
  contentType | MIME content type for the resource.

PHTTPResource::PHTTPResource | ( | const PURL & | url,
|  | const PString & | contentType,
|  | const PHTTPAuthority & | auth |
| ) |  |  | `[protected]`

Parameters:

  url | Name of the resource in URL space.
  contentType | MIME content type for the resource.
  auth | Authorisation for the resource.

virtual PHTTPResource::~PHTTPResource | ( |  | ) | `[virtual]`

## Member Function Documentation

static PBoolean PHTTPResource::CheckAuthority | ( | PHTTPAuthority & | authority,
|  | PHTTPServer & | server,
|  | const PHTTPRequest & | request,
|  | const PHTTPConnectionInfo & | connectInfo |
| ) |  |  | `[static, protected]`

virtual PBoolean PHTTPResource::CheckAuthority | ( | PHTTPServer & | server,
|  | const PHTTPRequest & | request,
|  | const PHTTPConnectionInfo & | conInfo |
| ) |  |  | `[protected, virtual]`

See if the resource is authorised given the mime info.

Parameters:

  server | Server to send response to.
  request | Information on this request.
  conInfo | Information on the connection

Reimplemented in PHTTPDirectory.

void PHTTPResource::ClearAuthority | ( |  | ) |

Set the current authority for the resource to unrestricted.

void PHTTPResource::ClearHitCount | ( |  | ) | `[inline]`

virtual PHTTPRequest* PHTTPResource::CreateRequest | ( | const PURL & | url,
|  | const PMIMEInfo & | inMIME,
|  | const PMultiPartList & | multipartFormInfo,
|  | PHTTPServer & | socket |
| ) |  |  | `[virtual]`

Create a new request block for this type of resource.

The default behaviour is to create a new PHTTPRequest instance.

Returns:
  Pointer to instance of PHTTPRequest descendant class.

Parameters:

  url | Universal Resource Locator for document.
  inMIME | Extra MIME information in command.
  multipartFormInfo | additional information for multi-part posts
  socket | socket used for request

Reimplemented in PHTTPFile, and PHTTPDirectory.

PHTTPAuthority* PHTTPResource::GetAuthority | ( |  | ) | const`[inline]`

Get the current authority for the resource.

Returns:
  Pointer to authority or NULL if unrestricted.

const PString& PHTTPResource::GetContentType | ( |  | ) | const`[inline]`

Get the current content type for the resource.

Returns:
  string for the current MIME content type.

virtual PBoolean PHTTPResource::GetExpirationDate | ( | PTime & | when | ) | `[virtual]`

Get a block of data (eg HTML) that the resource contains.

Returns:
  Status of load operation.

Parameters:

  when | Time that the resource expires

Reimplemented in PConfigPage, PConfigSectionsPage, PServiceHTTPString, PServiceHTTPFile, and PServiceHTTPDirectory.

DWORD PHTTPResource::GetHitCount | ( |  | ) | const`[inline]`

Get the current hit count for the resource.

This is the total number of times the resource was asked for by a remote client.

Returns:
  Hit count for the resource.

const PURL& PHTTPResource::GetURL | ( |  | ) | const`[inline]`

Get the URL for this resource.

Returns:
  The URL for this resource.

virtual PBoolean PHTTPResource::IsModifiedSince | ( | const PTime & | when | ) | `[virtual]`

Check to see if the resource has been modified since the date specified.

Returns:
  true if has been modified since.

Parameters:

  when | Time to see if modified later than

virtual PBoolean PHTTPResource::LoadData | ( | PHTTPRequest & | request,
|  | PCharArray & | data |
| ) |  |  | `[virtual]`

Get a block of data that the resource contains.

The default behaviour is to call the `LoadText()` function and if successful, call the `OnLoadedText()` function.

Returns:
  true if there is still more to load.

Parameters:

  request | Information on this request.
  data | Data used in reply.

Reimplemented in PHTTPFile, and PHTTPTailFile.

virtual PBoolean PHTTPResource::LoadHeaders | ( | PHTTPRequest & | request | ) | `[pure virtual]`

Get the headers for block of data (eg HTML) that the resource contains.

This will fill in all the fields of the `outMIME` parameter required by the resource and return the status for the load.

Returns:
  true if all OK, false if an error occurred.

Parameters:

  request | Information on this request.

Implemented in PHTTPString, PHTTPFile, PHTTPTailFile, PHTTPDirectory, PSOAPServerResource, and PXMLRPCServerResource.

virtual PString PHTTPResource::LoadText | ( | PHTTPRequest & | request | ) | `[virtual]`

Get a block of text data (eg HTML) that the resource contains.

The default behaviour is to assert, one of `LoadText()` or `LoadData()` functions must be overridden for correct operation.

Returns:
  String for loaded text.

Parameters:

  request | Information on this request.

Reimplemented in PHTTPString, PHTTPFile, PHTTPDirectory, PRegisterPage, and PServiceHTTPString.

virtual PBoolean PHTTPResource::OnGET | ( | PHTTPServer & | server,
|  | const PURL & | url,
|  | const PMIMEInfo & | info,
|  | const PHTTPConnectionInfo & | conInfo |
| ) |  |  | `[virtual]`

Handle the GET command passed from the HTTP socket.

The default action is to check the authorisation for the resource and call the virtuals `LoadHeaders()` and `OnGETData()` to get a resource to be sent to the socket.

Returns:
  true if the connection may persist, false if the connection must close. If there is no ContentLength field in the response, this value must be false for correct operation.

Parameters:

  server | HTTP server that received the request
  url | Universal Resource Locator for document.
  info | Extra MIME information in command.
  conInfo | HTTP connection information

virtual PBoolean PHTTPResource::OnGETData | ( | PHTTPServer & | server,
|  | const PURL & | url,
|  | const PHTTPConnectionInfo & | connectInfo,
|  | PHTTPRequest & | request |
| ) |  |  | `[virtual]`

Send the data associated with a GET command.

The default action calls `SendData()`.

Returns:
  true if the connection may persist, false if the connection must close. If there is no ContentLength field in the response, this value must be false for correct operation.

Parameters:

  server | HTTP server that received the request
  url | Universal Resource Locator for document
  connectInfo | HTTP connection information
  request | request state information

virtual PBoolean PHTTPResource::OnGETOrHEAD | ( | PHTTPServer & | server,
|  | const PURL & | url,
|  | const PMIMEInfo & | info,
|  | const PHTTPConnectionInfo & | conInfo,
|  | PBoolean | isGet |
| ) |  |  | `[protected, virtual]`

common code for GET and HEAD commands

Parameters:

  server | HTTP server that received the request
  url | Universal Resource Locator for document.
  info | Extra MIME information in command.
  conInfo | Connection information
  isGet | Flag indicating is GET or HEAD

virtual PBoolean PHTTPResource::OnHEAD | ( | PHTTPServer & | server,
|  | const PURL & | url,
|  | const PMIMEInfo & | info,
|  | const PHTTPConnectionInfo & | conInfo |
| ) |  |  | `[virtual]`

Handle the HEAD command passed from the HTTP socket.

The default action is to check the authorisation for the resource and call the virtual `LoadHeaders()` to get the header information to be sent to the socket.

Returns:
  true if the connection may persist, false if the connection must close If there is no ContentLength field in the response, this value must be false for correct operation.

Parameters:

  server | HTTP server that received the request
  url | Universal Resource Locator for document.
  info | Extra MIME information in command.
  conInfo | HTTP connection information

virtual void PHTTPResource::OnLoadedText | ( | PHTTPRequest & | request,
|  | PString & | text |
| ) |  |  | `[virtual]`

This is called after the text has been loaded and may be used to customise or otherwise mangle a loaded piece of text.

Typically this is used with HTML responses.

The default action for this function is to do nothing.

Parameters:

  request | Information on this request.
  text | Data used in reply.

Reimplemented in PHTTPForm, PHTTPConfig, PHTTPConfigSectionList, PConfigPage, PConfigSectionsPage, PRegisterPage, PServiceHTTPFile, and PServiceHTTPDirectory.

virtual PBoolean PHTTPResource::OnPOST | ( | PHTTPServer & | server,
|  | const PURL & | url,
|  | const PMIMEInfo & | info,
|  | const PStringToString & | data,
|  | const PHTTPConnectionInfo & | conInfo |
| ) |  |  | `[virtual]`

Handle the POST command passed from the HTTP socket.

The default action is to check the authorisation for the resource and call the virtual `Post()` function to handle the data being received.

Returns:
  true if the connection may persist, false if the connection must close If there is no ContentLength field in the response, this value must be false for correct operation.

Parameters:

  server | HTTP server that received the request
  url | Universal Resource Locator for document.
  info | Extra MIME information in command.
  data | Variables in the POST data.
  conInfo | HTTP connection information

Reimplemented in PConfigPage, and PConfigSectionsPage.

virtual PBoolean PHTTPResource::OnPOSTData | ( | PHTTPRequest & | request,
|  | const PStringToString & | data |
| ) |  |  | `[virtual]`

Send the data associated with a POST command.

The default action calls `Post()`.

Returns:
  true if the connection may persist, false if the connection must close. If there is no ContentLength field in the response, this value must be false for correct operation.

Parameters:

  request | request information
  data | Variables in the POST data.

Reimplemented in PSOAPServerResource, and PXMLRPCServerResource.

virtual PBoolean PHTTPResource::Post | ( | PHTTPRequest & | request,
|  | const PStringToString & | data,
|  | PHTML & | replyMessage |
| ) |  |  | `[virtual]`

Get a block of data (eg HTML) that the resource contains.

The default action for this function is to do nothing and return success.

Returns:
  true if the connection may persist, false if the connection must close

Parameters:

  request | Information on this request.
  data | Variables in the POST data.
  replyMessage | Reply message for post.

Reimplemented in PHTTPForm, PHTTPConfig, PHTTPConfigSectionList, PConfigPage, PConfigSectionsPage, and PRegisterPage.

virtual void PHTTPResource::SendData | ( | PHTTPRequest & | request | ) | `[virtual]`

Send the data associated with a command.

The default action is to call the virtual `LoadData()` to get a resource to be sent to the socket.

Parameters:

  request | information for this request

void PHTTPResource::SetAuthority | ( | const PHTTPAuthority & | auth | ) |

Set the current authority for the resource.

Parameters:

  auth | authority to set

## Member Data Documentation

PHTTPAuthority* PHTTPResource::authority `[protected]`

Authorisation method for the resource.

PURL PHTTPResource::baseURL `[protected]`

Base URL for the resource, may accept URLS with a longer hierarchy.

PString PHTTPResource::contentType `[protected]`

MIME content type for the resource.

volatile DWORD PHTTPResource::hitCount `[protected]`

COunt of number of times resource was accessed.

The documentation for this class was generated from the following file:

- http.h