class CircuitsWebAdapter(object): class Root(Controller): def index(self): return "circuits" def eventSub(self): return "\n" 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 start(self): self._server.start() def stop(self): self._server.stop() def application(self, environ, start_response): if environ['SCRIPT_NAME'] == '/': environ['SCRIPT_NAME'] = '' environ['PATH_INFO'] = '/' + environ['PATH_INFO'] oldenviron = environ.copy() path = wsgiref.util.shift_path_info(environ) return self._tree[path].application(environ, start_response)
class CircuitsWebAdapter(object): class Root(Controller): def index(self): return "circuits" def eventSub(self): return "\n" 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 start(self): self._server.start() def stop(self): self._server.stop() def application(self, environ, start_response): if environ['SCRIPT_NAME'] == '/': environ['SCRIPT_NAME'] = '' environ['PATH_INFO'] = '/' + environ['PATH_INFO'] oldenviron = environ.copy() path = wsgiref.util.shift_path_info(environ) return self._tree[path].application(environ, start_response)
class CircuitsWebAdapter(AdapterInterface): """ circuits.web WSGI server adapter. """ def setup(self, server_name, host, port, app_callback): from circuits.web import BaseServer, Server from circuits.lib.web.wsgi import Gateway from circuits.web import Controller # self._server = BaseServer(port, host) self._server = Server(port, host) self._server += Gateway(app_callback) self._server += Root() # self._server += Test() # self._server += eventsub() # self._server += handler() def start(self): self._server.start() def stop(self): self._server.stop() @classmethod def is_available(cls): try: from circuits.web import BaseServer from circuits.web import Controller from circuits.lib.web.wsgi import Gateway return True except: return False
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()
HTML = """\ <html> <head> <title>An example application</title> </head> <body> <h1>This is my sample application</h1> Put the content here... <hr> <a href="/exit">Quit</a> </body> </html> """ class Root(Controller): def index(self): return HTML def exit(self): raise SystemExit(0) app = Server(("0.0.0.0", 8000)) Root().register(app) app.start() webbrowser.open("http://127.0.0.1:8000/") app.join()