
/*
 * Copyright (c) 2001-2002 Packet Design, LLC.
 * All rights reserved.
 * 
 * Subject to the following obligations and disclaimer of warranty,
 * use and redistribution of this software, in source or object code
 * forms, with or without modifications are expressly permitted by
 * Packet Design; provided, however, that:
 * 
 *    (i)  Any and all reproductions of the source or object code
 *         must include the copyright notice above and the following
 *         disclaimer of warranties; and
 *    (ii) No rights are granted, in any manner or form, to use
 *         Packet Design trademarks, including the mark "PACKET DESIGN"
 *         on advertising, endorsements, or otherwise except as such
 *         appears in the above copyright notice or in the software.
 * 
 * THIS SOFTWARE IS BEING PROVIDED BY PACKET DESIGN "AS IS", AND
 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, PACKET DESIGN MAKES NO
 * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING
 * THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
 * OR NON-INFRINGEMENT.  PACKET DESIGN DOES NOT WARRANT, GUARANTEE,
 * OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS
 * OF THE USE OF THIS SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY,
 * RELIABILITY OR OTHERWISE.  IN NO EVENT SHALL PACKET DESIGN BE
 * LIABLE FOR ANY DAMAGES RESULTING FROM OR ARISING OUT OF ANY USE
 * OF THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL
 * DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF
 * USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
 * THE USE OF THIS SOFTWARE, EVEN IF PACKET DESIGN IS ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Author: Archie Cobbs <archie@packetdesign.com>
 */

#ifndef _PDEL_HTTP_HTTP_DEFS_H_
#define _PDEL_HTTP_HTTP_DEFS_H_

/*
 * HTTP ports
 */
#define HTTP_PORT		80
#define HTTPS_PORT		443
#define PROXY_PORT		3128

/*
 * HTTP time format for "Date" header
 */
#define HTTP_TIME_FMT_RFC1123	"%a, %d %b %Y %H:%M:%S GMT"
#define HTTP_TIME_FMT_RFC850	"%A, %d-%b-%y %H:%M:%S GMT"	/* obsolete */
#define HTTP_TIME_FMT_CTIME	"%c"				/* obsolete */

/*
 * Known HTTP protocol versions
 */
#define HTTP_PROTO_0_9		"HTTP/0.9"
#define HTTP_PROTO_1_0		"HTTP/1.0"
#define HTTP_PROTO_1_1		"HTTP/1.1"

/*
 * HTTP methods
 */
#define HTTP_METHOD_OPTIONS	"OPTIONS"
#define HTTP_METHOD_GET		"GET"
#define HTTP_METHOD_HEAD	"HEAD"
#define HTTP_METHOD_POST	"POST"
#define HTTP_METHOD_PUT		"PUT"
#define HTTP_METHOD_DELETE	"DELETE"
#define HTTP_METHOD_TRACE	"TRACE"
#define HTTP_METHOD_CONNECT	"CONNECT"

/*
 * HTTP headers
 */
#define HTTP_HEADER_ACCEPT		"Accept"
#define HTTP_HEADER_ACCEPT_CHARSET	"Accept-Charset"
#define HTTP_HEADER_ACCEPT_ENCODING	"Accept-Encoding"
#define HTTP_HEADER_ACCEPT_LANGUAGE	"Accept-Language"
#define HTTP_HEADER_AUTHORIZATION	"Authorization"
#define HTTP_HEADER_CACHE_CONTROL	"Cache-Control"
#define HTTP_HEADER_CONNECTION		"Connection"
#define HTTP_HEADER_CONTENT_DISPOSITION	"Content-Disposition"
#define HTTP_HEADER_CONTENT_ENCODING	"Content-Encoding"
#define HTTP_HEADER_CONTENT_LENGTH	"Content-Length"
#define HTTP_HEADER_CONTENT_TYPE	"Content-Type"
#define HTTP_HEADER_COOKIE		"Cookie"
#define HTTP_HEADER_DATE		"Date"
#define HTTP_HEADER_EXPIRES		"Expires"
#define HTTP_HEADER_HOST		"Host"
#define HTTP_HEADER_IF_MODIFIED_SINCE	"If-Modified-Since"
#define HTTP_HEADER_KEEP_ALIVE		"Keep-Alive"
#define HTTP_HEADER_LAST_MODIFIED	"Last-Modified"
#define HTTP_HEADER_LOCATION		"Location"
#define HTTP_HEADER_PRAGMA		"Pragma"
#define HTTP_HEADER_PROXY_AUTHENTICATE	"Proxy-Authenticate"
#define HTTP_HEADER_PROXY_AUTHORIZATION	"Proxy-Authorization"
#define HTTP_HEADER_PROXY_CONNECTION	"Proxy-Connection"
#define HTTP_HEADER_SERVER		"Server"
#define HTTP_HEADER_SET_COOKIE		"Set-Cookie"
#define HTTP_HEADER_TRANSFER_ENCODING	"Transfer-Encoding"
#define HTTP_HEADER_USER_AGENT		"User-Agent"
#define HTTP_HEADER_WWW_AUTHENTICATE	"WWW-Authenticate"

/*
 * MIME content types
 */
#define HTTP_CTYPE_FORM_URLENCODED	"application/x-www-form-urlencoded"
#define HTTP_CTYPE_MULTIPART_FORMDATA	"multipart/form-data"
#define HTTP_CTYPE_APPLICATION_OCTETS	"application/octet-stream"

/*
 * HTTP status codes
 */
#define	HTTP_STATUS_CONTINUE				100
#define	HTTP_STATUS_SWITCHING_PROTOCOLS			101
#define	HTTP_STATUS_OK					200
#define	HTTP_STATUS_CREATED				201
#define	HTTP_STATUS_ACCEPTED				202
#define	HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION	203
#define	HTTP_STATUS_NO_CONTENT				204
#define	HTTP_STATUS_RESET_CONTENT			205
#define	HTTP_STATUS_PARTIAL_CONTENT			206
#define	HTTP_STATUS_MULTIPLE_CHOICES			300
#define	HTTP_STATUS_MOVED_PERMANENTLY			301
#define	HTTP_STATUS_FOUND				302
#define	HTTP_STATUS_SEE_OTHER				303
#define	HTTP_STATUS_NOT_MODIFIED			304
#define	HTTP_STATUS_USE_PROXY				305
#define	HTTP_STATUS_TEMPORARY_REDIRECT			307
#define	HTTP_STATUS_BAD_REQUEST				400
#define	HTTP_STATUS_UNAUTHORIZED			401
#define	HTTP_STATUS_PAYMENT_REQUIRED			402
#define	HTTP_STATUS_FORBIDDEN				403
#define	HTTP_STATUS_NOT_FOUND				404
#define	HTTP_STATUS_METHOD_NOT_ALLOWED			405
#define	HTTP_STATUS_NOT_ACCEPTABLE			406
#define	HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED	407
#define	HTTP_STATUS_REQUEST_TIME_OUT			408
#define	HTTP_STATUS_CONFLICT				409
#define	HTTP_STATUS_GONE				410
#define	HTTP_STATUS_LENGTH_REQUIRED			411
#define	HTTP_STATUS_PRECONDITION_FAILED			412
#define	HTTP_STATUS_REQUEST_ENTITY_TOO_LARGE		413
#define	HTTP_STATUS_REQUEST_URI_TOO_LARGE		414
#define	HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE		415
#define	HTTP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE	416
#define	HTTP_STATUS_EXPECTATION_FAILED			417
#define	HTTP_STATUS_INTERNAL_SERVER_ERROR		500
#define	HTTP_STATUS_NOT_IMPLEMENTED			501
#define	HTTP_STATUS_BAD_GATEWAY				502
#define	HTTP_STATUS_SERVICE_UNAVAILABLE			503
#define	HTTP_STATUS_GATEWAY_TIME_OUT			504
#define	HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED		505

#endif	/* _PDEL_HTTP_HTTP_DEFS_H_ */
