Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Unified Diff: third_party/twisted_8_1/twisted/web/proxy.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/twisted_8_1/twisted/web/monitor.py ('k') | third_party/twisted_8_1/twisted/web/resource.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/twisted_8_1/twisted/web/proxy.py
diff --git a/third_party/twisted_8_1/twisted/web/proxy.py b/third_party/twisted_8_1/twisted/web/proxy.py
deleted file mode 100644
index 98e5c41b9fd3170a6db7cc6f9808e6a0e5625ece..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/web/proxy.py
+++ /dev/null
@@ -1,283 +0,0 @@
-# -*- test-case-name: twisted.web.test.test_proxy -*-
-# Copyright (c) 2001-2007 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Simplistic HTTP proxy support.
-
-This comes in two main variants - the Proxy and the ReverseProxy.
-
-When a Proxy is in use, a browser trying to connect to a server (say,
-www.yahoo.com) will be intercepted by the Proxy, and the proxy will covertly
-connect to the server, and return the result.
-
-When a ReverseProxy is in use, the client connects directly to the ReverseProxy
-(say, www.yahoo.com) which farms off the request to one of a pool of servers,
-and returns the result.
-
-Normally, a Proxy is used on the client end of an Internet connection, while a
-ReverseProxy is used on the server end.
-"""
-
-import urlparse
-from urllib import quote as urlquote
-
-from twisted.internet import reactor
-from twisted.internet.protocol import ClientFactory
-from twisted.web.resource import Resource
-from twisted.web.server import NOT_DONE_YET
-from twisted.web.http import HTTPClient, Request, HTTPChannel
-
-
-
-class ProxyClient(HTTPClient):
- """
- Used by ProxyClientFactory to implement a simple web proxy.
- """
-
- def __init__(self, command, rest, version, headers, data, father):
- self.father = father
- self.command = command
- self.rest = rest
- if "proxy-connection" in headers:
- del headers["proxy-connection"]
- headers["connection"] = "close"
- self.headers = headers
- self.data = data
-
-
- def connectionMade(self):
- self.sendCommand(self.command, self.rest)
- for header, value in self.headers.items():
- self.sendHeader(header, value)
- self.endHeaders()
- self.transport.write(self.data)
-
-
- def handleStatus(self, version, code, message):
- if message:
- # Add a whitespace to message, this allows empty messages
- # transparently
- message = " %s" % (message,)
- self.father.transport.write("%s %s%s\r\n" % (version, code, message))
-
-
- def handleHeader(self, key, value):
- self.father.transport.write("%s: %s\r\n" % (key, value))
-
-
- def handleEndHeaders(self):
- self.father.transport.write("\r\n")
-
-
- def handleResponsePart(self, buffer):
- self.father.transport.write(buffer)
-
-
- def handleResponseEnd(self):
- self.transport.loseConnection()
- self.father.channel.transport.loseConnection()
-
-
-
-class ProxyClientFactory(ClientFactory):
- """
- Used by ProxyRequest to implement a simple web proxy.
- """
-
- protocol = ProxyClient
-
-
- def __init__(self, command, rest, version, headers, data, father):
- self.father = father
- self.command = command
- self.rest = rest
- self.headers = headers
- self.data = data
- self.version = version
-
-
- def buildProtocol(self, addr):
- return self.protocol(self.command, self.rest, self.version,
- self.headers, self.data, self.father)
-
-
- def clientConnectionFailed(self, connector, reason):
- self.father.transport.write("HTTP/1.0 501 Gateway error\r\n")
- self.father.transport.write("Content-Type: text/html\r\n")
- self.father.transport.write("\r\n")
- self.father.transport.write('''<H1>Could not connect</H1>''')
- self.father.transport.loseConnection()
-
-
-
-class ProxyRequest(Request):
- """
- Used by Proxy to implement a simple web proxy.
-
- @ivar reactor: the reactor used to create connections.
- @type reactor: object providing L{twisted.internet.interfaces.IReactorTCP}
- """
-
- protocols = {'http': ProxyClientFactory}
- ports = {'http': 80}
-
- def __init__(self, channel, queued, reactor=reactor):
- Request.__init__(self, channel, queued)
- self.reactor = reactor
-
-
- def process(self):
- parsed = urlparse.urlparse(self.uri)
- protocol = parsed[0]
- host = parsed[1]
- port = self.ports[protocol]
- if ':' in host:
- host, port = host.split(':')
- port = int(port)
- rest = urlparse.urlunparse(('', '') + parsed[2:])
- if not rest:
- rest = rest + '/'
- class_ = self.protocols[protocol]
- headers = self.getAllHeaders().copy()
- if 'host' not in headers:
- headers['host'] = host
- self.content.seek(0, 0)
- s = self.content.read()
- clientFactory = class_(self.method, rest, self.clientproto, headers,
- s, self)
- self.reactor.connectTCP(host, port, clientFactory)
-
-
-
-class Proxy(HTTPChannel):
- """
- This class implements a simple web proxy.
-
- Since it inherits from L{twisted.protocols.http.HTTPChannel}, to use it you
- should do something like this::
-
- from twisted.web import http
- f = http.HTTPFactory()
- f.protocol = Proxy
-
- Make the HTTPFactory a listener on a port as per usual, and you have
- a fully-functioning web proxy!
- """
-
- requestFactory = ProxyRequest
-
-
-
-class ReverseProxyRequest(Request):
- """
- Used by ReverseProxy to implement a simple reverse proxy.
-
- @ivar proxyClientFactoryClass: a proxy client factory class, used to create
- new connections.
- @type proxyClientFactoryClass: L{ClientFactory}
-
- @ivar reactor: the reactor used to create connections.
- @type reactor: object providing L{twisted.internet.interfaces.IReactorTCP}
- """
-
- proxyClientFactoryClass = ProxyClientFactory
-
- def __init__(self, channel, queued, reactor=reactor):
- Request.__init__(self, channel, queued)
- self.reactor = reactor
-
-
- def process(self):
- self.received_headers['host'] = self.factory.host
- clientFactory = self.proxyClientFactoryClass(
- self.method, self.uri, self.clientproto, self.getAllHeaders(),
- self.content.read(), self)
- self.reactor.connectTCP(self.factory.host, self.factory.port,
- clientFactory)
-
-
-
-class ReverseProxy(HTTPChannel):
- """
- Implements a simple reverse proxy.
-
- For details of usage, see the file examples/proxy.py.
- """
-
- requestFactory = ReverseProxyRequest
-
-
-
-class ReverseProxyResource(Resource):
- """
- Resource that renders the results gotten from another server
-
- Put this resource in the tree to cause everything below it to be relayed
- to a different server.
-
- @ivar proxyClientFactoryClass: a proxy client factory class, used to create
- new connections.
- @type proxyClientFactoryClass: L{ClientFactory}
-
- @ivar reactor: the reactor used to create connections.
- @type reactor: object providing L{twisted.internet.interfaces.IReactorTCP}
- """
-
- proxyClientFactoryClass = ProxyClientFactory
-
-
- def __init__(self, host, port, path, reactor=reactor):
- """
- @param host: the host of the web server to proxy.
- @type host: C{str}
-
- @param port: the port of the web server to proxy.
- @type port: C{port}
-
- @param path: the base path to fetch data from. Note that you shouldn't
- put any trailing slashes in it, it will be added automatically in
- request. For example, if you put B{/foo}, a request on B{/bar} will
- be proxied to B{/foo/bar}. Any required encoding of special
- characters (such as " " or "/") should have been done already.
-
- @type path: C{str}
- """
- Resource.__init__(self)
- self.host = host
- self.port = port
- self.path = path
- self.reactor = reactor
-
-
- def getChild(self, path, request):
- """
- Create and return a proxy resource with the same proxy configuration
- as this one, except that its path also contains the segment given by
- C{path} at the end.
- """
- return ReverseProxyResource(
- self.host, self.port, self.path + '/' + urlquote(path, safe=""))
-
-
- def render(self, request):
- """
- Render a request by forwarding it to the proxied server.
- """
- # RFC 2616 tells us that we can omit the port if it's the default port,
- # but we have to provide it otherwise
- if self.port == 80:
- request.received_headers['host'] = self.host
- else:
- request.received_headers['host'] = "%s:%d" % (self.host, self.port)
- request.content.seek(0, 0)
- qs = urlparse.urlparse(request.uri)[4]
- if qs:
- rest = self.path + '?' + qs
- else:
- rest = self.path
- clientFactory = self.proxyClientFactoryClass(
- request.method, rest, request.clientproto,
- request.getAllHeaders(), request.content.read(), request)
- self.reactor.connectTCP(self.host, self.port, clientFactory)
- return NOT_DONE_YET
« no previous file with comments | « third_party/twisted_8_1/twisted/web/monitor.py ('k') | third_party/twisted_8_1/twisted/web/resource.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698