Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import tornado.ioloop
- import pyrestful.rest
- from pyrestful import mediatypes
- from pyrestful.rest import get, post, put, delete
- import tornado.web
- import db
- from json import JSONEncoder
- from bson import ObjectId
- # def _default(self, obj):
- # return getattr(obj.__class__, "to_json", _default.default)(obj)
- def _default(self, o):
- if isinstance(o, ObjectId):
- return str(o)
- return JSONEncoder.default(self, o)
- _default.default = JSONEncoder().default
- JSONEncoder.default = _default
- class MainRestService(pyrestful.rest.RestHandler):
- @get(_path="/users", _types=[int], _produces=mediatypes.APPLICATION_JSON)
- def getAllUsers(self):
- offset = int(self.request.arguments.get('offset', ["0"])[0])
- count = int(self.request.arguments.get('count', ["10"])[0])
- return {"responce" : db.getUsers(offset, count + offset)}
- @post(_path="/users", _types=[str, str, str, str], _produces=mediatypes.APPLICATION_JSON)
- def createUser(self, login, password, name, city):
- id = db.createUser(login, password, name, city)
- return {"create_user_id": id, "success":True}
- @get(_path="/users/{id}", _types=[int], _produces=mediatypes.APPLICATION_JSON)
- def getUser(self, id):
- user = db.getUserByID(id)
- if user is None:
- return {"Error":"Bad id"}
- return user
- @put(_path="/users/{id}", _types=[int, str, str, str], _produces=mediatypes.APPLICATION_JSON)
- def createUser(self, id, password, name, city):
- updated = db.updateUser(id, password, name, city)
- return {"update_user_id": id, "success":updated}
- @delete(_path="/users/{id}", _types=[int], _produces=mediatypes.APPLICATION_JSON)
- def deleteUser(self, id):
- deleted = db.deleteUser(id)
- return {"delete_user_id": id, "success":deleted}
- @get(_path="/users/auth", _produces=mediatypes.APPLICATION_JSON)
- def autchUser(self):
- login = self.request.arguments['login'][0]
- password = self.request.arguments['pass'][0]
- user = db.getUserByAuthData(login, password)
- if user is None:
- return {"Error":"Bad login or password"}
- return user
- @get(_path="/points", _types=[int], _produces=mediatypes.APPLICATION_JSON)
- def getAllPoints(self):
- offset = int(self.request.arguments.get('offset', ["0"])[0])
- count = int(self.request.arguments.get('count', ["100"])[0])
- return {"responce" : db.getPoints(offset,count + offset)}
- @get(_path="/points/{id}", _types=[int], _produces=mediatypes.APPLICATION_JSON)
- def getPoint(self, id):
- point = db.getPointByID(id)
- if point is None:
- return {"Error":"Bad id"}
- return point
- @get(_path="/point/search", _produces=mediatypes.APPLICATION_JSON)
- def getSpecialPoints(self):
- if self.request.arguments.has_key('name'):
- pointName = self.request.arguments['name'][0]
- points = db.getPointsByTitle(pointName)
- elif self.request.arguments.has_key('type'):
- pointType = self.request.arguments['type'][0]
- points = db.getPointsByType(pointType)
- else:
- coordinates = self.request.arguments
- points = [db.getGeoPoint(coordinates)]
- return {"responce" :points}
- @get(_path="/routes", _types=[int], _produces=mediatypes.APPLICATION_JSON)
- def getAllRoutes(self):
- offset = int(self.request.arguments.get('offset', ["0"])[0])
- count = int(self.request.arguments.get('count', ["100"])[0])
- return {"responce" : db.getRoutes(offset, count + offset)}
- @get(_path="/route/search", _types=[str], _produces=mediatypes.APPLICATION_JSON)
- def getSpecialRoutes(self, s):
- if self.request.arguments.has_key('name'):
- routeName = self.request.arguments['name'][0]
- routes = db.getRoutesByTitle(routeName)
- elif self.request.arguments.has_key('type'):
- routeType = self.request.arguments['type'][0]
- routes = db.getRoutesByType(routeType)
- else:
- routes = []
- return {"responce" : routes}
- @get(_path="/routes/{id}", _types=[int], _produces=mediatypes.APPLICATION_JSON)
- def getRoute(self, id):
- route = db.getRouteByID(id)
- if route is None:
- return {"Error":"Bad id"}
- return route
- if __name__ == '__main__':
- try:
- print("Start the service")
- app = pyrestful.rest.RestService([MainRestService]) #
- app.listen(8080)
- tornado.ioloop.IOLoop.instance().start()
- except KeyboardInterrupt:
- print("\nStop the service")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement