def handle_get_users(self, req, user_login: str): accept = req.headers.get('Accept') if 'application/json' in accept: contentType = 'application/json; charset=utf-8' body = json.dumps([v.__dict__ for (k, v) in self._users._users.items()]) else: # https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406 return Response(406, 'Not Acceptable') body = body.encode('utf-8') headers = {'Content-Type': contentType, 'Content-Length': len(body)} return Response(200, 'OK', headers, body)
def handle_get_reviews(self, req): cafe_id = req.query["cafe_id"][0] accept = req.headers.get('Accept') if 'application/json' in accept: contentType = 'application/json; charset=utf-8' body = json.dumps([v.__dict__ for v in self._cafes_reviews._cafe_reviews.get(int(cafe_id))]) else: # https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406 return Response(406, 'Not Acceptable') body = body.encode('utf-8') headers = {'Content-Type': contentType, 'Content-Length': len(body)} return Response(200, 'OK', headers, body)
def handle_del_review(self, req, login: str): rev_id = req.query["rev_id"][0] us_log = login self._cafes_reviews.del_by_userlogin(us_log, int(rev_id)) #mf = MediaFile(int(cafe_id), tp) #mf = self._media_files.put(mf, req.body()) return Response(204, 'Deleted')
def handle_post_users(self, req): user = self.read_user_from_request_body(req) _ = self._users.put(user) user = user.copy() if _ == -1: return HTTPError(403, 'Forbidden') user.password = None return Response(204, 'Created', body=user)
def handle_del_cafe_media(self, req, login: str): file_id = req.query["file_id"][0] cafe_id = req.query["cafe_id"][0] id_check = self._cafes._owner_login.get(login) # print("id = "+str(id_check)) if id_check != int(cafe_id): return HTTPError(403, 'Forbidden') self._media_files.delete_by_cafeid(int(cafe_id), int(file_id)) return Response(204, 'Deleted')
def handle_add_cafe_media(self, req, login: str): tp = req.query["type"][0] cafe_id = req.query["cafe_id"][0] id_check = self._cafes._owner_login.get(login) #print("id = "+str(id_check)) if id_check != int(cafe_id): return HTTPError(403, 'Forbidden') mf = MediaFile(int(cafe_id), tp) mf = self._media_files.put(mf, req.body()) return Response(204, 'Created', body=mf)
def handle_put_cafe(self, req: Request, login: str): cafe = Handler.read_cafe_from_req_body(req) cafe.owner = login id_check = self._cafes._owner_login.get(login) # print("id = "+str(id_check)) if id_check != None: cafe.id = id_check b = self._cafes.put(cafe) #if b == -1: # return HTTPError(403, 'Forbidden') return Response(204, 'Created', body=cafe)
def send_error(self, conn, err): try: status = err.status reason = err.reason body = (err.body or err.reason).encode('utf-8') except: status = 500 reason = b'Internal Server Error' body = b'Internal Server Error' resp = Response(status, reason, [('Content-Length', len(body))], body) self.send_response(conn, resp)
def handle_login_user(self, req: Request) -> Union[Response, HTTPError]: user_from_req = self.read_user_from_request_body(req) user_from_db = self._users.get_by_login(user_from_req.login) if user_from_db is None: # user not found, 404 return HTTPError(404, 'Not Found') if user_from_db.password != user_from_req.password: # forbidden, 403 return HTTPError(403, 'Forbidden') ts = int(time.time()) token = Token.as_authorization(user_from_db.login, ts + 3600) return Response(200, 'OK', headers={"Authorization": token})
def handle_get_user(self, req, user_id): user = self._users.get(int(user_id)) if not user: raise HTTPError(404, 'Not found') accept = req.headers.get('Accept') if 'application/json' in accept: contentType = 'application/json; charset=utf-8' body = json.dumps(user) else: # https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406 return HTTPError(406, 'Not Acceptable') body = body.encode('utf-8') headers = {'Content-Type': contentType, 'Content-Length': len(body)} return Response(200, 'OK', headers, body)
def handle_add_review(self, req, login: str): review = Handler.read_cafe_review_from_req_body(req) review.owner = login self._cafes_reviews.put(review) return Response(204, 'Created', body=review)