Python twisted.web.server.Site() Examples
The following are 30
code examples of twisted.web.server.Site().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
twisted.web.server
, or try the search function
.
Example #1
Source File: site.py From worker with GNU General Public License v3.0 | 7 votes |
def __init__(self, db): self.prefix = "" root = Resource() prefix = root for path in config.PREFIX.split('/'): if len(path): r = Resource() prefix.putChild(path, r) prefix = r self.prefix += "/%s" % path prefix.putChild("trigger", Triggers(db)) prefix.putChild("tag", Tags(db)) prefix.putChild("pattern", Patterns(db)) prefix.putChild("event", Events(db)) prefix.putChild("contact", Contacts(db)) prefix.putChild("subscription", Subscriptions(db)) prefix.putChild("user", Login(db)) prefix.putChild("notification", Notifications(db)) server.Site.__init__(self, root)
Example #2
Source File: http.py From kotori with GNU Affero General Public License v3.0 | 6 votes |
def startService(self): """ Start TCP listener on designated HTTP port, serving ``HttpChannelContainer`` as root resource. """ # Don't start service twice if self.running == 1: return self.running = 1 # Prepare startup http_listen = self.settings.kotori.http_listen http_port = int(self.settings.kotori.http_port) log.info('Starting HTTP service on {http_listen}:{http_port}', http_listen=http_listen, http_port=http_port) # Configure root Site object and start listening to requests. # This must take place only once - can't bind to the same port multiple times! factory = LocalSite(self.root) reactor.listenTCP(http_port, factory, interface=http_listen)
Example #3
Source File: server.py From kotori with GNU Affero General Public License v3.0 | 6 votes |
def boot_frontend(config, debug=False): """ Boot a Pyramid WSGI application as Twisted component """ http_port = int(config.get('config-web', 'http_port')) websocket_uri = unicode(config.get('wamp', 'listen')) # https://stackoverflow.com/questions/13122519/serving-pyramid-application-using-twistd/13138610#13138610 config = resource_filename('kotori.frontend', 'development.ini') application = get_app(config, 'main') # https://twistedmatrix.com/documents/13.1.0/web/howto/web-in-60/wsgi.html resource = WSGIResource(reactor, reactor.getThreadPool(), application) reactor.listenTCP(http_port, Site(resource))
Example #4
Source File: test_web.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_sessionUIDGeneration(self): """ L{site.getSession} generates L{Session} objects with distinct UIDs from a secure source of entropy. """ site = server.Site(resource.Resource()) # Ensure that we _would_ use the unpredictable random source if the # test didn't stub it. self.assertIdentical(site._entropy, os.urandom) def predictableEntropy(n): predictableEntropy.x += 1 return (unichr(predictableEntropy.x) * n).encode("charmap") predictableEntropy.x = 0 self.patch(site, "_entropy", predictableEntropy) a = self.getAutoExpiringSession(site) b = self.getAutoExpiringSession(site) self.assertEqual(a.uid, b"01" * 0x20) self.assertEqual(b.uid, b"02" * 0x20) # This functionality is silly (the value is no longer used in session # generation), but 'counter' was a public attribute since time # immemorial so we should make sure if anyone was using it to get site # metrics or something it keeps working. self.assertEqual(site.counter, 2)
Example #5
Source File: test_distrib.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def testDistrib(self): # site1 is the publisher r1 = resource.Resource() r1.putChild("there", static.Data("root", "text/plain")) site1 = server.Site(r1) self.f1 = PBServerFactory(distrib.ResourcePublisher(site1)) self.port1 = reactor.listenTCP(0, self.f1) self.sub = distrib.ResourceSubscription("127.0.0.1", self.port1.getHost().port) r2 = resource.Resource() r2.putChild("here", self.sub) f2 = MySite(r2) self.port2 = reactor.listenTCP(0, f2) agent = client.Agent(reactor) d = agent.request(b"GET", "http://127.0.0.1:%d/here/there" % \ (self.port2.getHost().port,)) d.addCallback(client.readBody) d.addCallback(self.assertEqual, 'root') return d
Example #6
Source File: test_webclient.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def setUp(self): plainRoot = Data(b'not me', 'text/plain') tlsRoot = Data(b'me neither', 'text/plain') plainSite = server.Site(plainRoot, timeout=None) tlsSite = server.Site(tlsRoot, timeout=None) self.tlsPort = reactor.listenSSL( 0, tlsSite, contextFactory=ssl.DefaultOpenSSLContextFactory( serverPEMPath, serverPEMPath), interface="127.0.0.1") self.plainPort = reactor.listenTCP(0, plainSite, interface="127.0.0.1") self.plainPortno = self.plainPort.getHost().port self.tlsPortno = self.tlsPort.getHost().port plainRoot.putChild(b'one', Redirect(self.getHTTPS('two'))) tlsRoot.putChild(b'two', Redirect(self.getHTTP('three'))) plainRoot.putChild(b'three', Redirect(self.getHTTPS('four'))) tlsRoot.putChild(b'four', Data(b'FOUND IT!', 'text/plain'))
Example #7
Source File: test_webclient.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_getPageDeprecated(self): """ L{client.getPage} is deprecated. """ port = reactor.listenTCP( 0, server.Site(Data(b'', 'text/plain')), interface="127.0.0.1") portno = port.getHost().port self.addCleanup(port.stopListening) url = networkString("http://127.0.0.1:%d" % (portno,)) d = client.getPage(url) warningInfo = self.flushWarnings([self.test_getPageDeprecated]) self.assertEqual(len(warningInfo), 1) self.assertEqual(warningInfo[0]['category'], DeprecationWarning) self.assertEqual( warningInfo[0]['message'], "twisted.web.client.getPage was deprecated in " "Twisted 16.7.0; please use https://pypi.org/project/treq/ or twisted.web.client.Agent instead") return d.addErrback(lambda _: None)
Example #8
Source File: test_webclient.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_downloadPageDeprecated(self): """ L{client.downloadPage} is deprecated. """ port = reactor.listenTCP( 0, server.Site(Data(b'', 'text/plain')), interface="127.0.0.1") portno = port.getHost().port self.addCleanup(port.stopListening) url = networkString("http://127.0.0.1:%d" % (portno,)) path = FilePath(self.mktemp()) d = client.downloadPage(url, path.path) warningInfo = self.flushWarnings([self.test_downloadPageDeprecated]) self.assertEqual(len(warningInfo), 1) self.assertEqual(warningInfo[0]['category'], DeprecationWarning) self.assertEqual( warningInfo[0]['message'], "twisted.web.client.downloadPage was deprecated in " "Twisted 16.7.0; please use https://pypi.org/project/treq/ or twisted.web.client.Agent instead") return d.addErrback(lambda _: None)
Example #9
Source File: test_web.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_processingFailedNoTraceback(self): """ L{Request.processingFailed} when the site has C{displayTracebacks} set to C{False} does not write out the failure, but give a generic error message. """ d = DummyChannel() request = server.Request(d, 1) request.site = server.Site(resource.Resource()) request.site.displayTracebacks = False fail = failure.Failure(Exception("Oh no!")) request.processingFailed(fail) self.assertNotIn(b"Oh no!", request.transport.written.getvalue()) self.assertIn( b"Processing Failed", request.transport.written.getvalue() ) # Since we didn't "handle" the exception, flush it to prevent a test # failure self.assertEqual(1, len(self.flushLoggedErrors()))
Example #10
Source File: test_web.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_processingFailedDisplayTraceback(self): """ L{Request.processingFailed} when the site has C{displayTracebacks} set to C{True} writes out the failure. """ d = DummyChannel() request = server.Request(d, 1) request.site = server.Site(resource.Resource()) request.site.displayTracebacks = True fail = failure.Failure(Exception("Oh no!")) request.processingFailed(fail) self.assertIn(b"Oh no!", request.transport.written.getvalue()) # Since we didn't "handle" the exception, flush it to prevent a test # failure self.assertEqual(1, len(self.flushLoggedErrors()))
Example #11
Source File: test_web.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_processingFailedDisplayTracebackHandlesUnicode(self): """ L{Request.processingFailed} when the site has C{displayTracebacks} set to C{True} writes out the failure, making UTF-8 items into HTML entities. """ d = DummyChannel() request = server.Request(d, 1) request.site = server.Site(resource.Resource()) request.site.displayTracebacks = True fail = failure.Failure(Exception(u"\u2603")) request.processingFailed(fail) self.assertIn(b"☃", request.transport.written.getvalue()) # On some platforms, we get a UnicodeError when trying to # display the Failure with twisted.python.log because # the default encoding cannot display u"\u2603". Windows for example # uses a default encodig of cp437 which does not support u"\u2603". self.flushLoggedErrors(UnicodeError) # Since we didn't "handle" the exception, flush it to prevent a test # failure self.assertEqual(1, len(self.flushLoggedErrors()))
Example #12
Source File: test_web.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_sessionDifferentFromSecureSession(self): """ L{Request.session} and L{Request.secure_session} should be two separate sessions with unique ids and different cookies. """ d = DummyChannel() d.transport = DummyChannel.SSL() request = server.Request(d, 1) request.site = server.Site(resource.Resource()) request.sitepath = [] secureSession = request.getSession() self.assertIsNotNone(secureSession) self.addCleanup(secureSession.expire) self.assertEqual(request.cookies[0].split(b"=")[0], b"TWISTED_SECURE_SESSION") session = request.getSession(forceNotSecure=True) self.assertIsNotNone(session) self.assertEqual(request.cookies[1].split(b"=")[0], b"TWISTED_SESSION") self.addCleanup(session.expire) self.assertNotEqual(session.uid, secureSession.uid)
Example #13
Source File: test_web.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_sessionAttribute(self): """ On a L{Request}, the C{session} attribute retrieves the associated L{Session} only if it has been initialized. If the request is secure, it retrieves the secure session. """ site = server.Site(resource.Resource()) d = DummyChannel() d.transport = DummyChannel.SSL() request = server.Request(d, 1) request.site = site request.sitepath = [] self.assertIs(request.session, None) insecureSession = request.getSession(forceNotSecure=True) self.addCleanup(insecureSession.expire) self.assertIs(request.session, None) secureSession = request.getSession() self.addCleanup(secureSession.expire) self.assertIsNot(secureSession, None) self.assertIsNot(secureSession, insecureSession) self.assertIs(request.session, secureSession)
Example #14
Source File: test_web.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_retrieveNonExistentSession(self): """ L{Request.getSession} generates a new session if the relevant cookie is set in the incoming request. """ site = server.Site(resource.Resource()) d = DummyChannel() request = server.Request(d, 1) request.site = site request.sitepath = [] request.received_cookies[b'TWISTED_SESSION'] = b"does-not-exist" session = request.getSession() self.assertIsNotNone(session) self.addCleanup(session.expire) self.assertTrue(request.cookies[0].startswith(b'TWISTED_SESSION=')) # It should be a new session ID. self.assertNotIn(b"does-not-exist", request.cookies[0])
Example #15
Source File: test_cinder.py From flocker with Apache License 2.0 | 6 votes |
def webserver_for_test(test, url_path, response_content): """ Create a webserver that serves ``response_content`` from ``url_path``. """ app = Klein() @app.route(url_path) def _respond(request): return response_content factory = Site(app.resource()) endpoint = serverFromString(reactor, b"tcp:0") listening = endpoint.listen(factory) def stop_port(port): test.addCleanup(port.stopListening) return port listening.addCallback(stop_port) return listening
Example #16
Source File: smartthings_cli.py From smartthings_cli with Apache License 2.0 | 6 votes |
def get_auth_code(redirect_url, bind_port, client_id): """Prompt user to allow access, wait for response from auth server""" param = { 'response_type': 'code', 'client_id': client_id, 'scope': 'app', 'redirect_uri': redirect_url } auth_code_url = 'https://graph.api.smartthings.com/oauth/authorize?' + urlencode(param) logging.info('Please go to the following URL in your browser') logging.info('%s', auth_code_url) # HTTP site to handle subscriptions/polling handler = OAuthHandler() status_site = server.Site(handler) reactor.listenTCP(bind_port, status_site) # pylint: disable=no-member reactor.run() # pylint: disable=no-member auth_code = handler.auth_code logging.info('Received auth code: %s', auth_code) return auth_code
Example #17
Source File: test_distrib.py From learn_python3_spider with MIT License | 6 votes |
def testDistrib(self): # site1 is the publisher r1 = resource.Resource() r1.putChild(b"there", static.Data(b"root", "text/plain")) site1 = server.Site(r1) self.f1 = PBServerFactory(distrib.ResourcePublisher(site1)) self.port1 = reactor.listenTCP(0, self.f1) self.sub = distrib.ResourceSubscription("127.0.0.1", self.port1.getHost().port) r2 = resource.Resource() r2.putChild(b"here", self.sub) f2 = MySite(r2) self.port2 = reactor.listenTCP(0, f2) agent = client.Agent(reactor) url = "http://127.0.0.1:{}/here/there".format( self.port2.getHost().port) url = url.encode("ascii") d = agent.request(b"GET", url) d.addCallback(client.readBody) d.addCallback(self.assertEqual, b'root') return d
Example #18
Source File: test_web.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def test_retrieveExistingSession(self): """ L{Request.getSession} retrieves an existing session if the relevant cookie is set in the incoming request. """ site = server.Site(resource.Resource()) d = DummyChannel() request = server.Request(d, 1) request.site = site request.sitepath = [] mySession = server.Session(b"special-id", site) site.sessions[mySession.uid] = mySession request.received_cookies[b'TWISTED_SESSION'] = mySession.uid self.assertIs(request.getSession(), mySession)
Example #19
Source File: test_webclients.py From mdk with Apache License 2.0 | 5 votes |
def start_server(): received = [] port = reactor.listenTCP(0, Site(ServerResource(received))) @wait_for(timeout=1.0) def stop(): return port.stopListening() return port.getHost().port, received, stop
Example #20
Source File: __init__.py From arnold-usd with Apache License 2.0 | 5 votes |
def run(self, handler): from twisted.web import server, wsgi from twisted.python.threadpool import ThreadPool from twisted.internet import reactor thread_pool = ThreadPool() thread_pool.start() reactor.addSystemEventTrigger('after', 'shutdown', thread_pool.stop) factory = server.Site(wsgi.WSGIResource(reactor, thread_pool, handler)) reactor.listenTCP(self.port, factory, interface=self.host) reactor.run()
Example #21
Source File: twisted_handler.py From liaar with MIT License | 5 votes |
def start(): root = SiteResource() factory = Site(root) reactor.listenTCP(setting.LIAAR_PORT, factory) logger.info('Liaar is available on port %d' % setting.LIAAR_PORT) # run the twisted reactor.run()
Example #22
Source File: _script.py From flocker with Apache License 2.0 | 5 votes |
def main(self, reactor, options): # We can use /etc/flocker/agent.yml and /etc/flocker/node.crt to load # some information we need: agent_config = get_configuration(options) control_host = agent_config['control-service']['hostname'] certificates_path = options["agent-config"].parent() control_port = options["rest-api-port"] flocker_client = FlockerClient(reactor, control_host, control_port, certificates_path.child(b"cluster.crt"), certificates_path.child(b"plugin.crt"), certificates_path.child(b"plugin.key")) self._create_listening_directory(PLUGIN_PATH.parent()) # Get the node UUID, and then start up: # Retry on *all* errors. getting_id = retry_failure( reactor=reactor, function=flocker_client.this_node_uuid, steps=backoff() ) def run_service(node_id): endpoint = serverFromString( reactor, "unix:{}:mode=600".format(PLUGIN_PATH.path)) service = StreamServerEndpointService(endpoint, Site( VolumePlugin(reactor, flocker_client, node_id).app.resource())) return main_for_service(reactor, service) getting_id.addCallback(run_service) return getting_id
Example #23
Source File: test_web.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def factory(self, *args, **kwargs): return server.Site(resource.Resource(), *args, **kwargs)
Example #24
Source File: testtools.py From flocker with Apache License 2.0 | 5 votes |
def build_UNIX_integration_tests(mixin_class, name, fixture): """ Build ``AsyncTestCase`` class that runs the tests in the mixin class with real queries over a UNIX socket. :param mixin_class: A mixin class for ``AsyncTestCase`` that relies on having a ``self.scenario``. :param name: A ``str``, the name of the test category. :param fixture: A callable that takes a ``AsyncTestCase`` and returns a ``klein.Klein`` object. :return: A L``AsyncTestCase`` class. """ class RealTests(mixin_class, AsyncTestCase): """ Tests that endpoints are available over the network interfaces that real API users will be connecting from. """ def setUp(self): # We use relpath as you can't bind to a path longer than 107 # chars. You can easily get an absolute path that long # from mktemp, but rather strangely bind doesn't care # how long the abspath is, so we call relpath here and # it should work as long as our method names aren't too long path = os.path.relpath(self.mktemp()) self.app = fixture(self) self.port = reactor.listenUNIX( path, Site(self.app.resource()), ) self.addCleanup(self.port.stopListening) self.agent = ProxyAgent(UNIXClientEndpoint(reactor, path), reactor) super(RealTests, self).setUp() RealTests.__name__ += name RealTests.__module__ = mixin_class.__module__ return RealTests # Fakes for testing Twisted Web servers. Unverified. Belongs in Twisted. # https://twistedmatrix.com/trac/ticket/3274
Example #25
Source File: twisted_test.py From tornado-zh with MIT License | 5 votes |
def start_twisted_server(self): class HelloResource(Resource): isLeaf = True def render_GET(self, request): return "Hello from twisted!" site = Site(HelloResource()) port = self.reactor.listenTCP(0, site, interface='127.0.0.1') self.twisted_port = port.getHost().port
Example #26
Source File: mockserver.py From scrapy-poet with BSD 3-Clause "New" or "Revised" License | 5 votes |
def main(): parser = argparse.ArgumentParser() parser.add_argument('resource') parser.add_argument('--port', type=int) args = parser.parse_args() module_name, name = args.resource.rsplit('.', 1) sys.path.append('.') resource = getattr(import_module(module_name), name)() http_port = reactor.listenTCP(args.port, Site(resource)) def print_listening(): host = http_port.getHost() print('Mock server {} running at http://{}:{}'.format( resource, host.host, host.port)) reactor.callWhenRunning(print_listening) reactor.run()
Example #27
Source File: bottle.py From lokun-record with GNU Affero General Public License v3.0 | 5 votes |
def run(self, handler): from twisted.web import server, wsgi from twisted.python.threadpool import ThreadPool from twisted.internet import reactor thread_pool = ThreadPool() thread_pool.start() reactor.addSystemEventTrigger('after', 'shutdown', thread_pool.stop) factory = server.Site(wsgi.WSGIResource(reactor, thread_pool, handler)) reactor.listenTCP(self.port, factory, interface=self.host) reactor.run()
Example #28
Source File: twisted_test.py From tornado-zh with MIT License | 5 votes |
def start_twisted_server(self): class HelloResource(Resource): isLeaf = True def render_GET(self, request): return "Hello from twisted!" site = Site(HelloResource()) port = self.reactor.listenTCP(0, site, interface='127.0.0.1') self.twisted_port = port.getHost().port
Example #29
Source File: bottle.py From appengine-bottle-skeleton with Apache License 2.0 | 5 votes |
def run(self, handler): from twisted.web import server, wsgi from twisted.python.threadpool import ThreadPool from twisted.internet import reactor thread_pool = ThreadPool() thread_pool.start() reactor.addSystemEventTrigger('after', 'shutdown', thread_pool.stop) factory = server.Site(wsgi.WSGIResource(reactor, thread_pool, handler)) reactor.listenTCP(self.port, factory, interface=self.host) reactor.run()
Example #30
Source File: test_soap.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def setUp(self): self.publisher = Test() self.p = reactor.listenTCP(0, server.Site(self.publisher), interface="127.0.0.1") self.port = self.p.getHost().port