Package twisted :: Package protocols :: Module http :: Class Request

[frames | no frames]

## Class Request

Known Subclasses:
  `ProxyRequest`, `Request`, `ReverseProxyRequest`

A HTTP request.

Subclasses should override the process() method to determine how the request will be processed.

Method Summary
| ``__init__`(self, channel, queued)`
| `__repr__(self)`
| `_authorize(self)`
| ``_cleanup`(self)` Called when have finished responding and are no longer queued.
| `_sendError(self, code, resp)`
| ``addCookie`(self, k, v, expires, domain, path, max_age, comment, secure)` Set an outgoing HTTP cookie.
| ``connectionLost`(self, reason)` connection was lost
| ``finish`(self)` We are finished writing data.
| ``getAllHeaders`(self)` Return dictionary of all headers the request received.
| `getClient(self)`
| `getClientIP(self)`
| ``getCookie`(self, key)` Get a cookie that was sent from the network.
| ``getHeader`(self, key)` Get a header that was sent from the network.
| ``getHost`(self)` Get my originally requesting transport's host.
| `getPassword(self)`
| ``getRequestHostname`(self)` Get the hostname that the user passed in to the request.
| `getUser(self)`
| ``gotLength`(self, length)` Called when HTTP channel got length of content in this request.
| ``handleContentChunk`(self, data)` Write a chunk of data.
| `isSecure(self)`
| ``noLongerQueued`(self)` Notify the object that it is no longer queued.
| ``parseCookies`(self)` Parse cookie headers.
| ``process`(self)` Override in subclasses.
| ``redirect`(self, url)` Utility function that does a redirect.
| ``registerProducer`(self, producer, streaming)` Register a producer.
| ``requestReceived`(self, command, path, version)` Called by channel when all data has been received.
| ``setETag`(self, etag)` Set an entity tag for the outgoing response.
| ``setHeader`(self, k, v)` Set an outgoing HTTP header.
| ``setHost`(self, host, port, ssl)` Change the host and port the request thinks it's using.
| ``setLastModified`(self, when)` Set the Last-Modified time for the response to this request.
| ``setResponseCode`(self, code, message)` Set the HTTP response code.
| ``unregisterProducer`(self)` Unregister the producer.
| ``write`(self, data)` Write some data as a result of an HTTP request.

Instance Variable Summary
A mapping of strings (the argument names) to lists of values. i.e., ?foo=bar&foo=baz&quux=spam results in {'foo': ['bar', 'baz'], 'quux': ['spam']}. | `args`: All of the arguments, including URL and POST arguments.
`str` | `method`: The HTTP method that was used.
| `path`: The path only (arguments not included).
| `received_headers`: All received headers
`str` | `uri`: The full URI that was requested (includes arguments).

Class Variable Summary
`tuple` | `__implements__` = `(<class twisted.internet.interfaces.ICo...`
`int` | `_forceSSL` = 0
`int` | `chunked` = 0
`str` | `clientproto` = `'(no clientproto yet)'`
`int` | `code` = 200
`str` | `code_message` = `'OK'`
`NoneType` | `etag` = None
`int` | `finished` = 0
`NoneType` | `lastModified` = None
`NoneType` | `producer` = None
`int` | `sentLength` = 0
`int` | `startedWriting` = 0

Method Details

### __init__(self, channel, queued)
(Constructor)

  Parameters:
    `channel` - the channel we're connected to.
    `queued` - are we in the request queue, or can we start writing to the transport?

### _cleanup(self)

Called when have finished responding and are no longer queued.

### addCookie(self, k, v, expires=None, domain=None, path=None, max_age=None, comment=None, secure=None)

Set an outgoing HTTP cookie.

In general, you should consider using sessions instead of cookies, see twisted.web.server.Request.getSession and the twisted.web.server.Session class for details.

### connectionLost(self, reason)

connection was lost

### finish(self)

We are finished writing data.

### getAllHeaders(self)

Return dictionary of all headers the request received.

### getCookie(self, key)

Get a cookie that was sent from the network.

### getHeader(self, key)

Get a header that was sent from the network.

### getHost(self)

Get my originally requesting transport's host.

Don't rely on the 'transport' attribute, since Request objects may be copied remotely. For information on this method's return value, see twisted.internet.tcp.Port.

### getRequestHostname(self)

Get the hostname that the user passed in to the request.

This will either use the Host: header (if it is available) or the host we are listening on if the header is unavailable.

### gotLength(self, length)

Called when HTTP channel got length of content in this request.

This method is not intended for users.

### handleContentChunk(self, data)

Write a chunk of data.

This method is not intended for users.

### noLongerQueued(self)

Notify the object that it is no longer queued.

We start writing whatever data we have to the transport, etc.

This method is not intended for users.

### parseCookies(self)

Parse cookie headers.

This method is not intended for users.

### process(self)

Override in subclasses.

This method is not intended for users.

### redirect(self, url)

Utility function that does a redirect.

The request should have finish() called after this.

### registerProducer(self, producer, streaming)

Register a producer.

### requestReceived(self, command, path, version)

Called by channel when all data has been received.

This method is not intended for users.

### setETag(self, etag)

Set an entity tag for the outgoing response.

That's "entity tag" as in the HTTP/1.1 ETag header, "used for comparing two or more entities from the same requested resource."

If I am a conditional request, I may modify my response code to `NOT_MODIFIED` or `PRECONDITION_FAILED`, if appropriate for the tag given.

  Parameters:
    `etag` - The entity tag for the resource being returned.
    (type=string)
  Returns:
    If I am a If-None-Match conditional request and the tag matches one in the request, I return `http.CACHED` to indicate that you should write no body. Otherwise, I return a false value.

### setHeader(self, k, v)

Set an outgoing HTTP header.

### setHost(self, host, port, ssl=0)

Change the host and port the request thinks it's using.

This method is useful for working with reverse HTTP proxies (e.g. both Squid and Apache's mod_proxy can do this), when the address the HTTP client is using is different than the one we're listening on.

For example, Apache may be listening on https://www.example.com, and then forwarding requests to http://localhost:8080, but we don't want HTML produced by Twisted to say 'http://localhost:8080', they should say 'https://www.example.com', so we do:

      request.setHost('www.example.com', 443, ssl=1)

This method is experimental.

### setLastModified(self, when)

Set the Last-Modified time for the response to this request.

If I am called more than once, I ignore attempts to set Last-Modified earlier, only replacing the Last-Modified time if it is to a later value.

If I am a conditional request, I may modify my response code to `NOT_MODIFIED` if appropriate for the time given.

  Parameters:
    `when` - The last time the resource being returned was modified, in seconds since the epoch.
    (type=number)
  Returns:
    If I am a If-Modified-Since conditional request and the time given is not newer than the condition, I return `http.CACHED` to indicate that you should write no body. Otherwise, I return a false value.

### setResponseCode(self, code, message=None)

Set the HTTP response code.

### unregisterProducer(self)

Unregister the producer.

### write(self, data)

Write some data as a result of an HTTP request. The first time this is called, it writes out response data.

Instance Variable Details

### args

All of the arguments, including URL and POST arguments.

  Type:
    A mapping of strings (the argument names) to lists of values. i.e., ?foo=bar&foo=baz&quux=spam results in {'foo': ['bar', 'baz'], 'quux': ['spam']}.

### method

The HTTP method that was used.

  Type:
    `str`
  Value:

        '(no method yet)'

### path

The path only (arguments not included).

### received_headers

All received headers

### uri

The full URI that was requested (includes arguments).

  Type:
    `str`
  Value:

        '(no uri yet)'

Class Variable Details

### __implements__

  Type:
    `tuple`
  Value:

        (<class twisted.internet.interfaces.IConsumer at 0x824feb4>,)

### _forceSSL

  Type:
    `int`
  Value:

        0

### chunked

  Type:
    `int`
  Value:

        0

### clientproto

  Type:
    `str`
  Value:

        '(no clientproto yet)'

### code

  Type:
    `int`
  Value:

        200

### code_message

  Type:
    `str`
  Value:

        'OK'

### etag

  Type:
    `NoneType`
  Value:

        None

### finished

  Type:
    `int`
  Value:

        0

### lastModified

  Type:
    `NoneType`
  Value:

        None

### producer

  Type:
    `NoneType`
  Value:

        None

### sentLength

  Type:
    `int`
  Value:

        0

### startedWriting

  Type:
    `int`
  Value:

        0

Generated by Epydoc 2.0 on Sat May 15 20:08:11 2004 | http://epydoc.sf.net