Add bottle class proto (and simple class method routing)
This commit is contained in:
parent
3fe80ecef8
commit
b0914d58f5
24
aore/miscutils/bottlecl.py
Normal file
24
aore/miscutils/bottlecl.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from bottle import Bottle
|
||||||
|
|
||||||
|
|
||||||
|
class BottleCL(object):
|
||||||
|
def __init__(self):
|
||||||
|
self._app = Bottle()
|
||||||
|
self.init_routes()
|
||||||
|
|
||||||
|
def init_routes(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def add_route(self, route_path, handler):
|
||||||
|
self._app.route(route_path, callback=handler)
|
||||||
|
|
||||||
|
def add_error(self, error_code, handler):
|
||||||
|
if not self._app.error_handler:
|
||||||
|
self._app.error_handler = {error_code: handler}
|
||||||
|
else:
|
||||||
|
self._app.error_handler[error_code] = handler
|
||||||
|
|
||||||
|
def start(self, host, port):
|
||||||
|
self._app.run(host=host, port=port)
|
@ -2,44 +2,48 @@
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from bottle import Bottle, response
|
from bottle import response
|
||||||
|
from miscutils.bottlecl import BottleCL
|
||||||
|
|
||||||
from aore.search.fiasfactory import FiasFactory
|
|
||||||
|
|
||||||
|
class App(BottleCL):
|
||||||
|
def __init__(self, config):
|
||||||
|
super(App, self).__init__()
|
||||||
logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO)
|
logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO)
|
||||||
app = Bottle()
|
|
||||||
fias_factory = FiasFactory()
|
|
||||||
|
|
||||||
|
self._config = config
|
||||||
|
# self._factory = FiasFactory()
|
||||||
|
|
||||||
@app.route(r'/expand/<aoid:re:[\w]{8}(-[\w]{4}){3}-[\w]{12}>')
|
def init_routes(self):
|
||||||
def expand(aoid):
|
self.add_route(r'/expand/<aoid:re:[\w]{8}(-[\w]{4}){3}-[\w]{12}>', self.__expand)
|
||||||
|
self.add_route(r'/normalize/<aoid:re:[\w]{8}(-[\w]{4}){3}-[\w]{12}>', self.__normalize)
|
||||||
|
self.add_route(r'/find/<text>', self.__find)
|
||||||
|
self.add_route(r'/find/<text>/<strong>', self.__find)
|
||||||
|
self.add_error(404, self.basic_error_handler)
|
||||||
|
self.add_error(500, self.basic_error_handler)
|
||||||
|
|
||||||
|
def __expand(self, aoid):
|
||||||
response.content_type = 'application/json'
|
response.content_type = 'application/json'
|
||||||
response.set_header('Access-Control-Allow-Origin', '*')
|
response.set_header('Access-Control-Allow-Origin', '*')
|
||||||
|
|
||||||
return json.dumps(fias_factory.expand(aoid))
|
return json.dumps(self._factory.expand(aoid))
|
||||||
|
|
||||||
|
def __normalize(self, aoid):
|
||||||
@app.route(r'/normalize/<aoid:re:[\w]{8}(-[\w]{4}){3}-[\w]{12}>')
|
|
||||||
def normalize(aoid):
|
|
||||||
response.content_type = 'application/json'
|
response.content_type = 'application/json'
|
||||||
response.set_header('Access-Control-Allow-Origin', '*')
|
response.set_header('Access-Control-Allow-Origin', '*')
|
||||||
|
|
||||||
return json.dumps(fias_factory.normalize(aoid))
|
return json.dumps(self._factory.normalize(aoid))
|
||||||
|
|
||||||
|
def __find(self, text, strong=False):
|
||||||
@app.route(r'/find/<text>')
|
|
||||||
@app.route(r'/find/<text>/<strong>')
|
|
||||||
def find(text, strong=False):
|
|
||||||
strong = (strong == "strong")
|
strong = (strong == "strong")
|
||||||
response.content_type = 'application/json'
|
response.content_type = 'application/json'
|
||||||
response.set_header('Access-Control-Allow-Origin', '*')
|
response.set_header('Access-Control-Allow-Origin', '*')
|
||||||
|
|
||||||
return json.dumps(fias_factory.find(text, strong))
|
return json.dumps(self._factory.find(text, strong))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
@app.error(404)
|
def basic_error_handler(error):
|
||||||
def error404(error):
|
|
||||||
response.content_type = 'application/json'
|
response.content_type = 'application/json'
|
||||||
response.set_header('Access-Control-Allow-Origin', '*')
|
response.set_header('Access-Control-Allow-Origin', '*')
|
||||||
|
|
||||||
return json.dumps(dict(error="Page not found"))
|
return json.dumps(dict(error=error.status))
|
||||||
|
@ -1,25 +1,26 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from aore import phias, config
|
from aore import phias, config
|
||||||
|
from bottle import run
|
||||||
|
|
||||||
# Config section
|
# Config section
|
||||||
config.sphinx_conf.listen = "192.168.0.37:9312"
|
# config.sphinx_conf.listen = "192.168.0.37:9312"
|
||||||
config.sphinx_conf.var_dir = "C:\\Sphinx"
|
# config.sphinx_conf.var_dir = "C:\\Sphinx"
|
||||||
|
#
|
||||||
config.db_conf.database = "pyfias"
|
# config.db_conf.database = "pyfias"
|
||||||
config.db_conf.host = "192.168.0.37"
|
# config.db_conf.host = "192.168.0.37"
|
||||||
config.db_conf.port = 5432
|
# config.db_conf.port = 5432
|
||||||
config.db_conf.user = "postgres"
|
# config.db_conf.user = "postgres"
|
||||||
config.db_conf.password = "intercon"
|
# config.db_conf.password = "intercon"
|
||||||
|
#
|
||||||
config.unrar_config.path = "C:\\Program Files (x86)\\WinRAR\\unrar.exe"
|
# config.unrar_config.path = "C:\\Program Files (x86)\\WinRAR\\unrar.exe"
|
||||||
config.folders.temp = "E:\\!TEMP"
|
# config.folders.temp = "E:\\!TEMP"
|
||||||
|
#
|
||||||
config.basic.logging = True
|
# config.basic.logging = True
|
||||||
|
|
||||||
# Define main app
|
# Define main app
|
||||||
application = phias.app
|
application = phias.App('test-config-fname')
|
||||||
|
|
||||||
# Run bottle WSGI server if no external
|
# Run bottle WSGI server if no external
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
application.run(host='0.0.0.0', port=8087, debug=True)
|
application.start('0.0.0.0', 8087)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user