]> granicus.if.org Git - python/commitdiff
Patch #1025790: Add status code constants to httplib.
authorMartin v. Löwis <martin@v.loewis.de>
Sat, 18 Sep 2004 09:03:49 +0000 (09:03 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sat, 18 Sep 2004 09:03:49 +0000 (09:03 +0000)
Doc/lib/libhttplib.tex
Lib/httplib.py
Misc/ACKS
Misc/NEWS

index 60fd7b1031bbedafc5e58979c596706bfeb7d8c6..ed15e73d4e43e6e249da730dea6216f4101387e8 100644 (file)
@@ -24,16 +24,6 @@ that use HTTP and HTTPS.
   to the online docstrings for usage.
 \end{notice}
 
-The constants defined in this module are:
-
-\begin{datadesc}{HTTP_PORT}
-  The default port for the HTTP protocol (always \code{80}).
-\end{datadesc}
-
-\begin{datadesc}{HTTPS_PORT}
-  The default port for the HTTPS protocol (always \code{443}).
-\end{datadesc}
-
 The module provides the following classes:
 
 \begin{classdesc}{HTTPConnection}{host\optional{, port}}
@@ -135,6 +125,168 @@ HTTP status code that we don't understand.
 \versionadded{2.0}
 \end{excdesc}
 
+The constants defined in this module are:
+
+\begin{datadesc}{HTTP_PORT}
+  The default port for the HTTP protocol (always \code{80}).
+\end{datadesc}
+
+\begin{datadesc}{HTTPS_PORT}
+  The default port for the HTTPS protocol (always \code{443}).
+\end{datadesc}
+
+and also the following constants for integer status codes:
+
+\begin{tableiii}{l|c|l}{constant}{Constant}{Value}{Definition}
+  \lineiii{CONTINUE}{\code{100}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.1.1}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.1.1}}
+  \lineiii{SWITCHING_PROTOCOLS}{\code{101}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.1.2}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.1.2}}
+  \lineiii{PROCESSING}{\code{102}}
+    {WEBDAV, \ulink{RFC 2518, Section 10.1}
+      {http://www.webdav.org/specs/rfc2518.htm#STATUS_102}}
+
+  \lineiii{OK}{\code{200}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.1}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}}
+  \lineiii{CREATED}{\code{201}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.2}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2}}
+  \lineiii{ACCEPTED}{\code{202}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.3}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3}}
+  \lineiii{NON_AUTHORITATIVE_INFORMATION}{\code{203}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.4}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.4}}
+  \lineiii{NO_CONTENT}{\code{204}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.5}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5}}
+  \lineiii{RESET_CONTENT}{\code{205}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.6}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.6}}
+  \lineiii{PARTIAL_CONTENT}{\code{206}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.7}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.7}}
+  \lineiii{MULTI_STATUS}{\code{207}}
+    {WEBDAV \ulink{RFC 2518, Section 10.2}
+      {http://www.webdav.org/specs/rfc2518.htm#STATUS_207}}
+  \lineiii{IM_USED}{\code{226}}
+    {Delta encoding in HTTP, \rfc{3229}, Section 10.4.1}
+
+  \lineiii{MULTIPLE_CHOICES}{\code{300}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.1}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.1}}
+  \lineiii{MOVED_PERMANENTLY}{\code{301}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.2}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2}}
+  \lineiii{FOUND}{\code{302}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.3}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3}}
+  \lineiii{SEE_OTHER}{\code{303}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.4}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4}}
+  \lineiii{NOT_MODIFIED}{\code{304}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.5}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}}
+  \lineiii{USE_PROXY}{\code{305}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.6}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.6}}
+  \lineiii{TEMPORARY_REDIRECT}{\code{307}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.8}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8}}
+
+  \lineiii{BAD_REQUEST}{\code{400}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.1}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}}
+  \lineiii{UNAUTHORIZED}{\code{401}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.2}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2}}
+  \lineiii{PAYMENT_REQUIRED}{\code{402}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.3}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}}
+  \lineiii{FORBIDDEN}{\code{403}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.4}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}}
+  \lineiii{NOT_FOUND}{\code{404}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.5}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5}}
+  \lineiii{METHOD_NOT_ALLOWED}{\code{405}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.6}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.6}}
+  \lineiii{NOT_ACCEPTABLE}{\code{406}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.7}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7}}
+  \lineiii{PROXY_AUTHENTICATION_REQUIRED}
+    {\code{407}}{HTTP/1.1, \ulink{RFC 2616, Section 10.4.8}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.8}}
+  \lineiii{REQUEST_TIMEOUT}{\code{408}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.9}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.9}}
+  \lineiii{CONFLICT}{\code{409}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.10}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10}}
+  \lineiii{GONE}{\code{410}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.11}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11}}
+  \lineiii{LENGTH_REQUIRED}{\code{411}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.12}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.12}}
+  \lineiii{PRECONDITION_FAILED}{\code{412}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.13}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.13}}
+  \lineiii{REQUEST_ENTITY_TOO_LARGE}
+    {\code{413}}{HTTP/1.1, \ulink{RFC 2616, Section 10.4.14}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14}}
+  \lineiii{REQUEST_URI_TOO_LONG}{\code{414}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.15}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.15}}
+  \lineiii{UNSUPPORTED_MEDIA_TYPE}{\code{415}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.16}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.16}}
+  \lineiii{REQUESTED_RANGE_NOT_SATISFIABLE}{\code{416}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.17}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.17}}
+  \lineiii{EXPECTATION_FAILED}{\code{417}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.18}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.18}}
+  \lineiii{UNPROCESSABLE_ENTITY}{\code{422}}
+    {WEBDAV, \ulink{RFC 2518, Section 10.3}
+      {http://www.webdav.org/specs/rfc2518.htm#STATUS_422}}
+  \lineiii{LOCKED}{\code{423}}
+    {WEBDAV \ulink{RFC 2518, Section 10.4}
+      {http://www.webdav.org/specs/rfc2518.htm#STATUS_423}}
+  \lineiii{FAILED_DEPENDENCY}{\code{424}}
+    {WEBDAV, \ulink{RFC 2518, Section 10.5}
+      {http://www.webdav.org/specs/rfc2518.htm#STATUS_424}}
+  \lineiii{UPGRADE_REQUIRED}{\code{426}}
+    {HTTP Upgrade to TLS, \rfc{2817}, Section 6}
+
+  \lineiii{INTERNAL_SERVER_ERROR}{\code{500}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.5.1}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1}}
+  \lineiii{NOT_IMPLEMENTED}{\code{501}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.5.2}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.2}}
+  \lineiii{BAD_GATEWAY}{\code{502}}
+    {HTTP/1.1 \ulink{RFC 2616, Section 10.5.3}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.3}}
+  \lineiii{SERVICE_UNAVAILABLE}{\code{503}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.5.4}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4}}
+  \lineiii{GATEWAY_TIMEOUT}{\code{504}}
+    {HTTP/1.1 \ulink{RFC 2616, Section 10.5.5}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.5}}
+  \lineiii{HTTP_VERSION_NOT_SUPPORTED}{\code{505}}
+    {HTTP/1.1, \ulink{RFC 2616, Section 10.5.6}
+      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.6}}
+  \lineiii{INSUFFICIENT_STORAGE}{\code{507}}
+    {WEBDAV, \ulink{RFC 2518, Section 10.6}
+      {http://www.webdav.org/specs/rfc2518.htm#STATUS_507}}
+  \lineiii{NOT_EXTENDED}{\code{510}}
+    {An HTTP Extension Framework, \rfc{2774}, Section 7}
+\end{tableiii}
 
 \subsection{HTTPConnection Objects \label{httpconnection-objects}}
 
index 1fb5e8a12b4a4ba9c6c290beded18675d3cc3144..d4fcf7c2d52a583bb253cacb4a2479b9b55cf45e 100644 (file)
@@ -93,6 +93,66 @@ _CS_IDLE = 'Idle'
 _CS_REQ_STARTED = 'Request-started'
 _CS_REQ_SENT = 'Request-sent'
 
+# status codes
+# informational
+CONTINUE = 100
+SWITCHING_PROTOCOLS = 101
+PROCESSING = 102
+
+# successful
+OK = 200
+CREATED = 201
+ACCEPTED = 202
+NON_AUTHORITATIVE_INFORMATION = 203
+NO_CONTENT = 204
+RESET_CONTENT = 205
+PARTIAL_CONTENT = 206
+MULTI_STATUS = 207
+IM_USED = 226
+
+# redirection
+MULTIPLE_CHOICES = 300
+MOVED_PERMANENTLY = 301
+FOUND = 302
+SEE_OTHER = 303
+NOT_MODIFIED = 304
+USE_PROXY = 305
+TEMPORARY_REDIRECT = 307
+
+# client error
+BAD_REQUEST = 400
+UNAUTHORIZED = 401
+PAYMENT_REQUIRED = 402
+FORBIDDEN = 403
+NOT_FOUND = 404
+METHOD_NOT_ALLOWED = 405
+NOT_ACCEPTABLE = 406
+PROXY_AUTHENTICATION_REQUIRED = 407
+REQUEST_TIMEOUT = 408
+CONFLICT = 409
+GONE = 410
+LENGTH_REQUIRED = 411
+PRECONDITION_FAILED = 412
+REQUEST_ENTITY_TOO_LARGE = 413
+REQUEST_URI_TOO_LONG = 414
+UNSUPPORTED_MEDIA_TYPE = 415
+REQUESTED_RANGE_NOT_SATISFIABLE = 416
+EXPECTATION_FAILED = 417
+UNPROCESSABLE_ENTITY = 422
+LOCKED = 423
+FAILED_DEPENDENCY = 424
+UPGRADE_REQUIRED = 426
+
+# server error
+INTERNAL_SERVER_ERROR = 500
+NOT_IMPLEMENTED = 501
+BAD_GATEWAY = 502
+SERVICE_UNAVAILABLE = 503
+GATEWAY_TIMEOUT = 504
+HTTP_VERSION_NOT_SUPPORTED = 505
+INSUFFICIENT_STORAGE = 507
+NOT_EXTENDED = 510
+
 class HTTPMessage(mimetools.Message):
 
     def addheader(self, key, value):
@@ -271,7 +331,7 @@ class HTTPResponse:
         # read until we get a non-100 response
         while True:
             version, status, reason = self._read_status()
-            if status != 100:
+            if status != CONTINUE:
                 break
             # skip the header from the 100 response
             while True:
@@ -329,8 +389,7 @@ class HTTPResponse:
             self.length = None
 
         # does the body have a fixed length? (of zero)
-        if (status == 204 or            # No Content
-            status == 304 or            # Not Modified
+        if (status == NO_CONTENT or status == NOT_MODIFIED or
             100 <= status < 200 or      # 1xx codes
             self._method == 'HEAD'):
             self.length = 0
index 04114bf8ffd34cd7210dca6fc0ff3786ef424e24..72fe0cf1cba76729364b0e41cb2a4b33857f7f26 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -161,6 +161,7 @@ Eugene Dvurechenski
 Maxim Dzumanenko
 Hans Eckardt
 Grant Edwards
+Andrew Eland
 Lance Ellinghaus
 David Ely
 Jeff Epler
index fcc52d72177b6d377fcca86a6ab3f59c11518102..a6ca5fbf4d2fa7bcd0eb36cbe5ba8a94d45b0aaa 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -22,6 +22,8 @@ Extension modules
 Library
 -------
 
+- httplib now offers symbolic constants for the HTTP status codes.
+
 - SF bug #1028306:  Trying to compare a ``datetime.date`` to a
   ``datetime.datetime`` mistakenly compared only the year, month and day.
   Now it acts like a mixed-type comparison:  ``False`` for ``==``,