class Coachwhip(): def __init__(self): # Config configuration = open('config.json') data = json.load(configuration) configuration.close() self.configuration = data self.router = Router() # self.logger = Logger() """ Once an app instance has been obtained, with app = Coachwhip(), routes can be defined like so: @app.get('/hello_world') def helloWorldHandler(): print('Handling /hello_world') This is achieved using a decorator function """ def get(self, url, **kwargs): def decorator(fn): self.registerRouteHandler('get', url, fn, kwargs) return fn return decorator def post(self, url, **kwargs): def decorator(fn): self.registerRouteHandler('post', url, fn, kwargs) return fn return decorator def delete(self, url, **kwargs): def decorator(fn): self.registerRouteHandler('delete', url, fn, kwargs) return fn return decorator def put(self, url, **kwargs): def decorator(fn): self.registerRouteHandler('put', url, fn, kwargs) return fn return decorator def registerRouteHandler(self, verb, url, fn, kwargs): self.router.addRoute(verb, url, fn, kwargs) def listen(self, port=None): print(self.configuration) port = port if port else self.configuration['port'] self.bootServer(port) def bootServer(self, port): Server(port, self.router).listen();
def do_POST(self): print("POSTING") log.info(self.headers) body = self.get_post_body() log.info(body) path = self.get_clean_path(self.path) router = Router("post", path, query=body) response = router.execute() self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(self.btext(response))
def do_GET(self): print("GETTING") log.info(self.path) path, resp = self.get_path_query() router = Router("get", path, query=resp) response = router.execute() self.send_response(200) if ".css" in resp: self.send_header("Content-type", "text/css") elif ".js" in resp: self.send_header("Content-type", "text/javascript") else: self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(self.btext(response))
def run(self, config: Config, event: dict) -> dict: """イベントデータから対応するハンドラーを呼び出し、レスポンスを返却 :param Config config: コンフィグ :param dict event: イベントデータ :return dict: レスポンスの連想配列 :raise Error: Error系の例外発生時にメッセージを整形して再出力 """ try: request = self.__build_request(event) Bootstrap(config, request) router = Router(config.get('routes.path')) receiver = router.dispatch(request.url) handler = receiver.instantiate(config, request) return handler().to_dict() except Error as e: raise Exception(f'[{e.code}] {e.__class__.__name__}: {e.message}')
def __init__(self): # Config configuration = open('config.json') data = json.load(configuration) configuration.close() self.configuration = data self.router = Router()
def start(topology_path): with open(topology_path) as topology_file: topology = json.load(topology_file) routers = list() routers_data = topology.get('routers', []) for router in routers_data: routers.append( Router(router.get('name', ''), update_time, router.get('ports', []))) for router in routers: router.start() return routers
def _start(self, topology_path): """ Read the topology file and create routers :param topology_path: file containing topology information :return: """ with open(topology_path) as topology_file: topology = json.load(topology_file) routers = dict() routers_data = topology.get('routers', []) for router in routers_data: routers[router['name']] = Router(router.get('name', ''), router.get('ports', [])) self.analyzer.set_rauter(routers) self.analyzer.enalzar() for router in routers.values(): router.start() self.routers = routers
def test_dispatch(self): router = Router('tests/unit/routing/fixtures/router/routes.yml') handler = router.dispatch('/test/Router').instantiate() self.assertEqual('success', handler())
from flask import Flask from flask_restful import Api from flask_pymongo import PyMongo from services.event import Event from helper.jsonencoder import MongoJSONEncoder from routing.router import Router app = Flask(__name__) app.json_encoder = MongoJSONEncoder app.config["MONGO_URI"] = "mongodb://localhost:27017/event-board" mongo = PyMongo(app) api = Api(app) router = Router(api, mongo) router.addResource(api, Event, '/event') if __name__ == '__main__': app.run(debug=True)
#db.deleteAll() resp = Response(json.dumps({"success": True})) resp.headers["content-type"] = "application/json" return resp @app.route(PREFIX + '/cameras/<string:id>', methods=['GET', 'PUT', 'DELETE']) def single_camera(id): if request.method == 'GET': resp = Response(db.fetchOne(id)) resp.headers["content-type"] = "application/json" return resp elif request.method == 'PUT': camera = dict(request.get_json()) camera["id"] = id resp = Response(json.dumps({"success": db.updateOne(camera)})) resp.headers["content-type"] = "application/json" return resp elif request.method == 'DELETE': resp = Response(json.dumps({"success": db.removeOne(id)})) resp.headers["content-type"] = "application/json" return resp if __name__ == '__main__': app.mapData = CSVMapData() app.router = Router(app.mapData) app.secret_key = 'super secret key' app.config['SESSION_TYPE'] = 'filesystem' app.run(debug=True, host='0.0.0.0', port="9999")
import sys, csv from math import radians, cos, sin, asin, sqrt from routing.csvMapLoader import CSVMapData, calDistance, calDistByObj from routing.router import Router mapData = CSVMapData() router = Router(mapData) #Call this function to route (result is array of nodes) result = router.route(16.065568, 108.193644, 16.055423, 108.236216)