DataReelDataReelC++ Toolkit Documentation

HTTP Classes

Contents

Overview
Enumerations
Data Structures
Functions

Overview

HTTP client/server constants and data structures shared between HTTP client and server applications.


Enumerations

enum { // HTTP methods enumeration
  gxHTTP_UNKNOWN = 0, // Used for internal processing
  
  // HTTP/1.0 Client/Server Methods
  gxsHTTP_GET,    // Retrieve whatever data is identified by the URI
  gxsHTTP_HEAD,   // Returns only HTTP headers and no document body 
  gxsHTTP_PUT,    // Store the data under the supplied URL
  gxsHTTP_DELETE, // Delete information corresponding to the given URL
  gxsHTTP_POST,   // Creates object linked to the specified object 
  gxsHTTP_LINK,   // Links an existing object to the specified object 
  gxsHTTP_UNLINK  // Removes link information from an object 
};

enum { // HTTP status codes enumeration
  gxsHTTP_STATUS_UNKNOWN = 0, // Used for internal processing
  
  // HTTP/1.0 Status Codes obtained from:
  // http://sifu.rindu.net/course/one/freesoft/CIE/RFC/1945/1.htm

  // 1xx: Informational - Not used, but reserved for future use.

  // 2xx: Success - The action was successfully received, understood,
  // and accepted. 
  gxsHTTP_STATUS_OK	   = 200,  // The request has succeeded.
  gxsHTTP_STATUS_CREATED   = 201,  // The request has been fulfilled
                                   // and resulted in a new resource
                                   // being created (Used with POST).
  gxsHTTP_STATUS_ACCEPTED  = 202,  // The request has been accepted for
                                   // processing, but the processing 
                                   // has not been completed. 
  gxsHTTP_STATUS_NO_CONTENT = 204, // The server has fulfilled the
                                   // request but there is no new
                                   // information to send back.

  // 3xx: Redirection - Further action must be taken in order to 
  // complete the request.
  gxsHTTP_STATUS_MULTIPLE_CHOICES  = 300, // The requested resource is
                                          // available at one or more
                                          // locations. 
  gxsHTTP_STATUS_MOVED_PERMANENTLY = 301, // The requested resource has 
                                          // been assigned a new
                                          // permanent URL and
                                          // any future references to
                                          // this resource should
                                          // be done using that URL.
  gxsHTTP_STATUS_MOVED_TEMPORARILY = 302, // The requested resource 
                                          // resides temporarily under
                                          // a different URL.
  gxsHTTP_STATUS_NOT_MODIFIED      = 304, // Returned if the client has
                                          // performed a conditional
                                          // GET request and access is
                                          // allowed, but the document 
                                          // has not been modified
                                          // since the date and time
                                          // specified in the 
                                          // If-Modified-Since 
                                          // field.

  // 4xx: Client Error - The request contains bad syntax or cannot be
  // fulfilled.
  gxsHTTP_STATUS_BAD_REQUEST       = 400, // The request could not be
                                          // understood by the server 
                                          // due to malformed syntax.
  gxsHTTP_STATUS_UNAUTHORIZED      = 401, // The request requires user
                                          // authentication. The 
                                          // response must include
                                          // a WWW-Authenticate header
                                          // field containing a 
                                          // challenge applicable
                                          // to the requested
                                          // resource. 
  gxsHTTP_STATUS_FORBIDDEN         = 403, // The server understood the
                                          // request, but is refusing
                                          // to fulfill it.
                                          // Authorization will not
                                          // help and the request
                                          // should not be repeated.
  gxsHTTP_STATUS_NOT_FOUND         = 404, // The server has not found
                                          // anything matching the
                                          // Request-URI.

  // 5xx: Server Error - The server failed to fulfill an apparently 
  // valid request.
  gxsHTTP_STATUS_INTERNAL          = 500, // The server encountered an
                                          // unexpected condition which
                                          // prevented it from 
                                          // fulfilling the request.
  gxsHTTP_STATUS_NOT_IMPLEMENTED   = 501, // The server does not
                                          // support the
                                          // functionality required to 
                                          // fulfill the request.
  gxsHTTP_STATUS_BAD_GATEWAY       = 502, // The server, while acting 
                                          // as a gateway or proxy, 
                                          // received an invalid 
                                          // response from the
                                          // upstream server it 
                                          // accessed in attempting
                                          // to fulfill the request.
  gxsHTTP_STATUS_UNAVAILABLE       = 503  // The server is currently
                                          // unable to handle the
                                          // request due to a
                                          // temporary overloading or
                                          // maintenance of the server.
};

Data Structures

struct gxsNetscapeCookie
{
  // Cookie information
  gxString expires;
  gxString domain;
  gxString path;
  gxString host;
  gxString name;
  gxString value;
  int secure;
};

struct gxsHTTPHeader {
  // HTTP client/server header information
  gxString http_header;            // Unchanged or complete HTTP header
  gxString authentication_scheme;  // Authentication scheme used
  gxString realm;                  // Authentication realm 
  gxString current_server;         // Server type
  gxString location;               // Document location
  gxString http_last_modified;     // Date document was last modified
  gxString date;                   // Today's date
  gxString http_expires;           // Date this document expires 
  gxString file_extension;         // Document's file extension
  gxString content_type;           // Content type
  gxString mime_type;              // MIME type
  gxString etag;                   // Associated Entity tag 
  gxString pragma;                 // Implementation specific 
  gxString cache_control;          // Cache control parameters
  gxString content_encoding;       // Content encoding used
  float http_version;              // HTTP version
  int http_status;                 // Document/Client/Server status
  int authentication_needed;       // True if authentication is needed
  int not_found;                   // True if the document is not found
  int keep_alive;                  // True if connection is persistent
  int timeout;                     // Time out value
  int max_conns;                   // Maximum number of connections
  int length;                      // Document length
  int no_cache;                    // True if not using cached copies
  int accept_ranges;               // True if ranges are accepted

  // Netscape cookie infomation
  gxString auth_cookie; // Authentication cookie
  int use_cookies;      // True if using cookies
  gxQueue<gxsNetscapeCookie> netscape_cookies; // List of cookies
};

Functions

const char *gxsHTTPMethodMessage(int method)

Standalone function that returns a null terminated string corresponding to the specified connection method. The "method" variable must correspond to the one of the integer constants defined in the HTTP methods enumeration.

const char *gxsHTTPStatusCodeMessage(int status)

Standalone function that returns a null terminated string corresponding to the specified HTTP status message. The "status" variable must correspond to the one of the integer constants defined in the HTTP status code enumeration.