Ejemplo n.º 1
0
def webapp(request, manager, watcher):
    webapp = WebApp().register(manager)
    assert watcher.wait("ready")

    if hasattr(request.module, "application"):
        from circuits.web.wsgi import Gateway
        application = getattr(request.module, "application")
        Gateway({"/": application}).register(webapp)
        assert watcher.wait("registered")

    Root = getattr(request.module, "Root", None)
    if Root is not None:
        Root().register(webapp)
        assert watcher.wait("registered")

    def finalizer():
        webapp.fire(close())
        assert watcher.wait("closed")

        webapp.unregister()
        assert watcher.wait("unregistered")

    request.addfinalizer(finalizer)

    return webapp
Ejemplo n.º 2
0
def webapp(request):
    webapp = WebApp()

    if hasattr(request.module, "application"):
        from circuits.web.wsgi import Gateway
        application = getattr(request.module, "application")
        Gateway({"/": application}).register(webapp)

    Root = getattr(request.module, "Root", None)
    if Root is not None:
        Root().register(webapp)

    if request.config.option.verbose:
        Debugger().register(webapp)

    waiter = pytest.WaitEvent(webapp, "ready")
    webapp.start()
    assert waiter.wait()

    def finalizer():
        webapp.fire(close(), webapp.server)
        webapp.stop()

    request.addfinalizer(finalizer)

    return webapp
Ejemplo n.º 3
0
 def setup(self, host, port, app_callback):
     self._server = Server((host, port))
     self._server += Gateway(app_callback)
     self._server += self.Root()
     sfile = StaticFile('test.flac',
                        '/mnt/nas/Anastacia/Anastacia/03 Time.flac')
     self._tree = {}
     self._tree[sfile.name] = sfile
def test(apps):
    server = Server(0)
    Gateway(apps).register(server)

    waiter = pytest.WaitEvent(server, "ready")
    server.start()
    waiter.wait()

    f = urlopen(server.http.base)
    s = f.read()
    assert s == b"Hello World!"

    f = urlopen("{0:s}/foobar/".format(server.http.base))
    s = f.read()
    assert s == b"FooBar!"

    server.stop()
Ejemplo n.º 5
0
#!/usr/bin/env python

from circuits.web.wsgi import Gateway
from circuits.web import Controller, Server


def foo(environ, start_response):
    start_response("200 OK", [("Content-Type", "text/plain")])
    return ["Foo!"]


class Root(Controller):
    """App Rot"""
    def index(self):
        return "Hello World!"


app = Server(("0.0.0.0", 10000))
Root().register(app)
Gateway({"/foo": foo}).register(app)
app.run()
Ejemplo n.º 6
0
def main():
    config = Config()

    manager = Manager()

    if config.get("debug"):
        manager += Debugger(
            events=config.get("verbose"),
            file=config.get("errorlog"),
        )

    environ = Environment(config)

    SignalHandler(environ).register(environ)

    manager += environ

    if config.get("sock") is not None:
        bind = config.get("sock")
    elif ":" in config.get("bind"):
        address, port = config.get("bind").split(":")
        bind = (
            address,
            int(port),
        )
    else:
        bind = (
            config.get("bind"),
            config.get("port"),
        )

    server = (Server(bind) + Sessions() + Root(environ) +
              CacheControl(environ) + ErrorHandler(environ))

    if MemoryMonitor is not None:
        MemoryMonitor(channel="/memory").register(server)

    if not config.get("disable-logging"):
        server += Logger(file=config.get("accesslog", sys.stdout))

    if not config.get("disable-static"):
        server += Static(docroot=os.path.join(config.get("theme"), "htdocs"))

    if not config.get("disable-hgweb"):
        baseui = ui()
        baseui.setconfig("web", "prefix", "/+hg")
        baseui.setconfig("web", "style", "gitweb")
        baseui.setconfig("web", "allow_push", "*")
        baseui.setconfig("web", "push_ssl", False)
        baseui.setconfig("web", "allow_archive", ["bz2", "gz", "zip"])
        baseui.setconfig("web", "description", config.get("description"))

        server += Gateway({
            "/+hg":
            hgweb(environ.storage.repo_path, config.get("name"), baseui)
        })

    if not config.get("disable-compression"):
        server += Compression(environ)

    if config.get("daemon"):
        manager += Daemon(config.get("pidfile"))

    server.register(manager)

    manager.run()
Ejemplo n.º 7
0

class Root(Controller):
    def index(self):
        """Index Request Handler

        Controller(s) expose implicitly methods as request handlers.
        Request Handlers can still be customized by using the ``@expose``
        decorator. For example exposing as a different path.
        """
        return "Hello World! (wsgi)"


# Create singleton application
wsgi_adapter = None

if not wsgi_adapter:
    application = Manager(channel="app")
    Debugger().register(application)
    dispatcher = Dispatcher(channel="app").register(application)
    Root().register(dispatcher)
    wsgi_adapter = WSGIApplication(channel="app").register(application)
    Thread(target=application.run).start()

if __name__ == '__main__':
    server = Server(("0.0.0.0", 8888))
    Gateway({"/": wsgi_adapter}).register(server)
    server.run()
else:
    wsgi_adapter