diff --git a/server/server.py b/server/server.py new file mode 100644 index 0000000..7c9ef5c --- /dev/null +++ b/server/server.py @@ -0,0 +1,130 @@ +# from bottle import hook, response, route, run, static_file, request +from bottle import Bottle, hook, template, response, request,static_file +import json +import socket + +from techrec import * + +class RecServer: + def __init__(self,host="127.0.0.1", port=8000): + self._host = host + self._port = port + + self._app = Bottle() + self._route() + + self.db = RecDB() + + def start(self): + self._app.run(host=self._host, port=self._port) + + # @hook('after_request') + def enable_cors(self): + #These lines are needed for avoiding the "Access-Control-Allow-Origin" errors + response.headers['Access-Control-Allow-Origin'] = '*' + response.headers['Access-Control-Allow-Origin'] = '*' + response.headers['Access-Control-Allow-Methods'] = 'PUT, GET, POST, DELETE, OPTIONS' + response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token' + + def _route(self): + self._app.route('/favicon.ico', callback=self.favicon) + self._app.route('/help', callback=self.help) + self._app.route('/help/', callback=self.help) + + self._app.route('/create', method="POST", callback=self.create) + self._app.post('/create', callback=self.create) + + self._app.route('/get', method="GET", callback=self.getrec) + self._app.route('/get/', method="GET", callback=self.getrec) + self._app.route('/get/', method="GET", callback=self.getrec) + self._app.route('/get/', method="GET", callback=self.getrec) + + self._app.route('/search', method="GET", callback=self.search) + self._app.route('/search/', method="GET", callback=self.search) + self._app.route('/search/', method="GET", callback=self.search) + self._app.route('/oldsearch//', method="GET", callback=self.search) + self._app.route('/search/', method="GET", callback=self.search) + + self._app.route('/delete/', method="GET", callback=self.delete) + self._app.route('/delete//', method="GET", callback=self.delete) + + def extsearch( self, args ): + print "ARG", args + return self.rec_err("EXT") + + # @route('/create', method=['OPTIONS','POST']) + def create(self): + self.enable_cors() + print "ALL ITEM", request.POST.allitems() + + ret = {} + + for k,v in request.POST.allitems(): + print "P", k, v + ret[k] = v + return ret + + """ + a = Rec(name="Mimmo1",starttime="ora",endtime="fine") + db.add( a ) + db.printall() + db.search( Rec(name="Mimmo1") )""" + + # @route('/get') + # @route('/get/') + # @route('/get//') + def getrec(self, recid=None): + if not recid: + print "No ID" + else: + print "ID %s id" % ( recid ) + + # @route('/active') + def getactive(self): + print "GetActive" + + # @route('/delete/') + # @route('/delete//') + def delete( self, recid = None ): + if not recid: + self.rec_err("No recid!") + self.rec_err("Delete") + + def rec_err(self, msg): + return { "error": msg,} + + + # @route('/search') + # @route('/search/') + # @route('/search//') + def search( self, args=None): + if args == None: + print "Cerco tutti" + print args.split("/") + print self.db._search() + return self.rec_err("err") + + # @route('/favicon.ico') + def favicon(self): + return static_file('icon.ico', root="./img/", mimetype="image/ico") + + # @route('/help') + def help(self): + return "

help


\ +

/get, /get/, /get/

\ +

Get Info about rec identified by RECID

\ + \ +

/search, /search/, /search//

\ +

Search rec that match key/value (or get all)

\ + \ +

/delete/

\ +

Delete rec identified by RECID

\ +

/update

\ +

Not implemented.

" + +""" + TESTs +""" +if __name__ == "__main__": + c = RecServer() + c.start()