Пример #1
0
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();
Пример #2
0
 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))
Пример #3
0
 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))
Пример #4
0
	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}')
Пример #5
0
    def __init__(self):
        # Config
        configuration = open('config.json')
        data = json.load(configuration)
        configuration.close()
        self.configuration = data

        self.router = Router()
Пример #6
0
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
Пример #7
0
    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
Пример #8
0
	def test_dispatch(self):
		router = Router('tests/unit/routing/fixtures/router/routes.yml')
		handler = router.dispatch('/test/Router').instantiate()
		self.assertEqual('success', handler())
Пример #9
0
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)
Пример #10
0
        #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")
Пример #11
0
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)