Advertisement
Guest User

Untitled

a guest
Apr 30th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.67 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import tornado.ioloop
  3. import pyrestful.rest
  4. from pyrestful import mediatypes
  5. from pyrestful.rest import get, post, put, delete
  6. import tornado.web
  7.  
  8. import db
  9.  
  10. from json import JSONEncoder
  11. from bson import ObjectId
  12.  
  13. # def _default(self, obj):
  14. #     return getattr(obj.__class__, "to_json", _default.default)(obj)
  15.  
  16. def _default(self, o):
  17.     if isinstance(o, ObjectId):
  18.         return str(o)
  19.     return JSONEncoder.default(self, o)
  20.  
  21. _default.default = JSONEncoder().default
  22. JSONEncoder.default = _default
  23.  
  24.  
  25. class MainRestService(pyrestful.rest.RestHandler):
  26.     @get(_path="/users", _types=[int], _produces=mediatypes.APPLICATION_JSON)
  27.     def getAllUsers(self):
  28.         offset = int(self.request.arguments.get('offset', ["0"])[0])
  29.         count = int(self.request.arguments.get('count', ["10"])[0])
  30.         return {"responce" : db.getUsers(offset, count + offset)}
  31.  
  32.     @post(_path="/users", _types=[str, str, str, str], _produces=mediatypes.APPLICATION_JSON)
  33.     def createUser(self, login, password, name, city):
  34.         id = db.createUser(login, password, name, city)
  35.         return {"create_user_id": id, "success":True}
  36.  
  37.     @get(_path="/users/{id}", _types=[int], _produces=mediatypes.APPLICATION_JSON)
  38.     def getUser(self, id):
  39.         user = db.getUserByID(id)
  40.         if user is None:
  41.             return {"Error":"Bad id"}
  42.         return user
  43.  
  44.     @put(_path="/users/{id}", _types=[int, str, str, str], _produces=mediatypes.APPLICATION_JSON)
  45.     def createUser(self, id, password, name, city):
  46.         updated = db.updateUser(id, password, name, city)
  47.         return {"update_user_id": id, "success":updated}
  48.  
  49.     @delete(_path="/users/{id}", _types=[int], _produces=mediatypes.APPLICATION_JSON)
  50.     def deleteUser(self, id):
  51.         deleted = db.deleteUser(id)
  52.         return {"delete_user_id": id, "success":deleted}
  53.  
  54.     @get(_path="/users/auth", _produces=mediatypes.APPLICATION_JSON)
  55.     def autchUser(self):
  56.         login = self.request.arguments['login'][0]
  57.         password = self.request.arguments['pass'][0]
  58.         user = db.getUserByAuthData(login, password)
  59.         if user is None:
  60.             return {"Error":"Bad login or password"}
  61.         return user
  62.  
  63.     @get(_path="/points", _types=[int], _produces=mediatypes.APPLICATION_JSON)
  64.     def getAllPoints(self):
  65.         offset = int(self.request.arguments.get('offset', ["0"])[0])
  66.         count = int(self.request.arguments.get('count', ["100"])[0])
  67.         return {"responce" : db.getPoints(offset,count + offset)}
  68.  
  69.     @get(_path="/points/{id}", _types=[int], _produces=mediatypes.APPLICATION_JSON)
  70.     def getPoint(self, id):
  71.         point = db.getPointByID(id)
  72.         if point is None:
  73.             return {"Error":"Bad id"}
  74.         return point
  75.  
  76.     @get(_path="/point/search", _produces=mediatypes.APPLICATION_JSON)
  77.     def getSpecialPoints(self):
  78.         if self.request.arguments.has_key('name'):
  79.             pointName = self.request.arguments['name'][0]
  80.             points = db.getPointsByTitle(pointName)
  81.         elif self.request.arguments.has_key('type'):
  82.             pointType = self.request.arguments['type'][0]
  83.             points = db.getPointsByType(pointType)
  84.         else:
  85.             coordinates = self.request.arguments
  86.             points = [db.getGeoPoint(coordinates)]
  87.         return {"responce" :points}
  88.  
  89.  
  90.     @get(_path="/routes", _types=[int], _produces=mediatypes.APPLICATION_JSON)
  91.     def getAllRoutes(self):
  92.         offset = int(self.request.arguments.get('offset', ["0"])[0])
  93.         count = int(self.request.arguments.get('count', ["100"])[0])
  94.         return {"responce" : db.getRoutes(offset, count + offset)}
  95.  
  96.     @get(_path="/route/search", _types=[str], _produces=mediatypes.APPLICATION_JSON)
  97.     def getSpecialRoutes(self, s):
  98.         if self.request.arguments.has_key('name'):
  99.             routeName = self.request.arguments['name'][0]
  100.             routes = db.getRoutesByTitle(routeName)
  101.         elif self.request.arguments.has_key('type'):
  102.             routeType = self.request.arguments['type'][0]
  103.             routes = db.getRoutesByType(routeType)
  104.         else:
  105.             routes = []
  106.         return {"responce" : routes}
  107.  
  108.     @get(_path="/routes/{id}", _types=[int], _produces=mediatypes.APPLICATION_JSON)
  109.     def getRoute(self, id):
  110.         route = db.getRouteByID(id)
  111.         if route is None:
  112.             return {"Error":"Bad id"}
  113.         return route
  114.  
  115.  
  116. if __name__ == '__main__':
  117.     try:
  118.         print("Start the service")
  119.         app = pyrestful.rest.RestService([MainRestService]) #
  120.         app.listen(8080)
  121.         tornado.ioloop.IOLoop.instance().start()
  122.     except KeyboardInterrupt:
  123.         print("\nStop the service")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement