| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 | /******************************************************************************* copyright: Copyright (c) 2004 Kris Bell. All rights reserved license: BSD style: $(LICENSE) version: Initial release: April 2004 author: Kris *******************************************************************************/ module tango.net.http.HttpConst; /******************************************************************************* Constants *******************************************************************************/ struct HttpConst { enum Eol = "\r\n"; } /******************************************************************************* Headers are distinct types in their own right. This is because they are somewhat optimized via a trailing ':' character. *******************************************************************************/ struct HttpHeaderName { const(char)[] value; } /******************************************************************************* Define the traditional set of HTTP header names *******************************************************************************/ struct HttpHeader { // size of both the request & response buffer (per thread) enum int IOBufferSize = 16 * 1024; // maximum length for POST parameters (to avoid DOS ...) enum int MaxPostParamSize = 4 * 1024; enum HttpHeaderName Version = {"HTTP/1.1"}; enum HttpHeaderName TextHtml = {"text/html"}; enum HttpHeaderName Accept = {"Accept:"}; enum HttpHeaderName AcceptCharset = {"Accept-Charset:"}; enum HttpHeaderName AcceptEncoding = {"Accept-Encoding:"}; enum HttpHeaderName AcceptLanguage = {"Accept-Language:"}; enum HttpHeaderName AcceptRanges = {"Accept-Ranges:"}; enum HttpHeaderName Age = {"Age:"}; enum HttpHeaderName Allow = {"Allow:"}; enum HttpHeaderName Authorization = {"Authorization:"}; enum HttpHeaderName CacheControl = {"Cache-Control:"}; enum HttpHeaderName Connection = {"Connection:"}; enum HttpHeaderName ContentEncoding = {"Content-Encoding:"}; enum HttpHeaderName ContentLanguage = {"Content-Language:"}; enum HttpHeaderName ContentLength = {"Content-Length:"}; enum HttpHeaderName ContentLocation = {"Content-Location:"}; enum HttpHeaderName ContentRange = {"Content-Range:"}; enum HttpHeaderName ContentType = {"Content-Type:"}; enum HttpHeaderName Cookie = {"Cookie:"}; enum HttpHeaderName Date = {"Date:"}; enum HttpHeaderName ETag = {"ETag:"}; enum HttpHeaderName Expect = {"Expect:"}; enum HttpHeaderName Expires = {"Expires:"}; enum HttpHeaderName From = {"From:"}; enum HttpHeaderName Host = {"Host:"}; enum HttpHeaderName Identity = {"Identity:"}; enum HttpHeaderName IfMatch = {"If-Match:"}; enum HttpHeaderName IfModifiedSince = {"If-Modified-Since:"}; enum HttpHeaderName IfNoneMatch = {"If-None-Match:"}; enum HttpHeaderName IfRange = {"If-Range:"}; enum HttpHeaderName IfUnmodifiedSince = {"If-Unmodified-Since:"}; enum HttpHeaderName KeepAlive = {"Keep-Alive:"}; enum HttpHeaderName LastModified = {"Last-Modified:"}; enum HttpHeaderName Location = {"Location:"}; enum HttpHeaderName MaxForwards = {"Max-Forwards:"}; enum HttpHeaderName MimeVersion = {"MIME-Version:"}; enum HttpHeaderName Pragma = {"Pragma:"}; enum HttpHeaderName ProxyAuthenticate = {"Proxy-Authenticate:"}; enum HttpHeaderName ProxyConnection = {"Proxy-Connection:"}; enum HttpHeaderName Range = {"Range:"}; enum HttpHeaderName Referrer = {"Referer:"}; enum HttpHeaderName RetryAfter = {"Retry-After:"}; enum HttpHeaderName Server = {"Server:"}; enum HttpHeaderName ServletEngine = {"Servlet-Engine:"}; enum HttpHeaderName SetCookie = {"Set-Cookie:"}; enum HttpHeaderName SetCookie2 = {"Set-Cookie2:"}; enum HttpHeaderName TE = {"TE:"}; enum HttpHeaderName Trailer = {"Trailer:"}; enum HttpHeaderName TransferEncoding = {"Transfer-Encoding:"}; enum HttpHeaderName Upgrade = {"Upgrade:"}; enum HttpHeaderName UserAgent = {"User-Agent:"}; enum HttpHeaderName Vary = {"Vary:"}; enum HttpHeaderName Warning = {"Warning:"}; enum HttpHeaderName WwwAuthenticate = {"WWW-Authenticate:"}; } /******************************************************************************* Declare the traditional set of HTTP response codes *******************************************************************************/ enum HttpResponseCode { Continue = 100, SwitchingProtocols = 101, OK = 200, Created = 201, Accepted = 202, NonAuthoritativeInformation = 203, NoContent = 204, ResetContent = 205, PartialContent = 206, MultipleChoices = 300, MovedPermanently = 301, Found = 302, SeeOther = 303, NotModified = 304, UseProxy = 305, TemporaryRedirect = 307, BadRequest = 400, Unauthorized = 401, PaymentRequired = 402, Forbidden = 403, NotFound = 404, MethodNotAllowed = 405, NotAcceptable = 406, ProxyAuthenticationRequired = 407, RequestTimeout = 408, Conflict = 409, Gone = 410, LengthRequired = 411, PreconditionFailed = 412, RequestEntityTooLarge = 413, RequestURITooLarge = 414, UnsupportedMediaType = 415, RequestedRangeNotSatisfiable = 416, ExpectationFailed = 417, InternalServerError = 500, NotImplemented = 501, BadGateway = 502, ServiceUnavailable = 503, GatewayTimeout = 504, VersionNotSupported = 505, } /******************************************************************************* Status is a compound type, with a name and a code. *******************************************************************************/ struct HttpStatus { int code; const(char)[] name; } /******************************************************************************* Declare the traditional set of HTTP responses *******************************************************************************/ struct HttpResponses { enum { HttpStatus Continue = HttpStatus(HttpResponseCode.Continue, "Continue"), SwitchingProtocols = HttpStatus(HttpResponseCode.SwitchingProtocols, "SwitchingProtocols"), OK = HttpStatus(HttpResponseCode.OK, "OK"), Created = HttpStatus(HttpResponseCode.Created, "Created"), Accepted = HttpStatus(HttpResponseCode.Accepted, "Accepted"), NonAuthoritativeInformation = HttpStatus(HttpResponseCode.NonAuthoritativeInformation, "NonAuthoritativeInformation"), NoContent = HttpStatus(HttpResponseCode.NoContent, "NoContent"), ResetContent = HttpStatus(HttpResponseCode.ResetContent, "ResetContent"), PartialContent = HttpStatus(HttpResponseCode.PartialContent, "PartialContent"), MultipleChoices = HttpStatus(HttpResponseCode.MultipleChoices, "MultipleChoices"), MovedPermanently = HttpStatus(HttpResponseCode.MovedPermanently, "MovedPermanently"), Found = HttpStatus(HttpResponseCode.Found, "Found"), TemporaryRedirect = HttpStatus(HttpResponseCode.TemporaryRedirect, "TemporaryRedirect"), SeeOther = HttpStatus(HttpResponseCode.SeeOther, "SeeOther"), NotModified = HttpStatus(HttpResponseCode.NotModified, "NotModified"), UseProxy = HttpStatus(HttpResponseCode.UseProxy, "UseProxy"), BadRequest = HttpStatus(HttpResponseCode.BadRequest, "BadRequest"), Unauthorized = HttpStatus(HttpResponseCode.Unauthorized, "Unauthorized"), PaymentRequired = HttpStatus(HttpResponseCode.PaymentRequired, "PaymentRequired"), Forbidden = HttpStatus(HttpResponseCode.Forbidden, "Forbidden"), NotFound = HttpStatus(HttpResponseCode.NotFound, "NotFound"), MethodNotAllowed = HttpStatus(HttpResponseCode.MethodNotAllowed, "MethodNotAllowed"), NotAcceptable = HttpStatus(HttpResponseCode.NotAcceptable, "NotAcceptable"), ProxyAuthenticationRequired = HttpStatus(HttpResponseCode.ProxyAuthenticationRequired, "ProxyAuthenticationRequired"), RequestTimeout = HttpStatus(HttpResponseCode.RequestTimeout, "RequestTimeout"), Conflict = HttpStatus(HttpResponseCode.Conflict, "Conflict"), Gone = HttpStatus(HttpResponseCode.Gone, "Gone"), LengthRequired = HttpStatus(HttpResponseCode.LengthRequired, "LengthRequired"), PreconditionFailed = HttpStatus(HttpResponseCode.PreconditionFailed, "PreconditionFailed"), RequestEntityTooLarge = HttpStatus(HttpResponseCode.RequestEntityTooLarge, "RequestEntityTooLarge"), RequestURITooLarge = HttpStatus(HttpResponseCode.RequestURITooLarge, "RequestURITooLarge"), UnsupportedMediaType = HttpStatus(HttpResponseCode.UnsupportedMediaType, "UnsupportedMediaType"), RequestedRangeNotSatisfiable = HttpStatus(HttpResponseCode.RequestedRangeNotSatisfiable, "RequestedRangeNotSatisfiable"), ExpectationFailed = HttpStatus(HttpResponseCode.ExpectationFailed, "ExpectationFailed"), InternalServerError = HttpStatus(HttpResponseCode.InternalServerError, "InternalServerError"), NotImplemented = HttpStatus(HttpResponseCode.NotImplemented, "NotImplemented"), BadGateway = HttpStatus(HttpResponseCode.BadGateway, "BadGateway"), ServiceUnavailable = HttpStatus(HttpResponseCode.ServiceUnavailable, "ServiceUnavailable"), GatewayTimeout = HttpStatus(HttpResponseCode.GatewayTimeout, "GatewayTimeout"), VersionNotSupported = HttpStatus(HttpResponseCode.VersionNotSupported, "VersionNotSupported"), } } |