コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
 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')
コード例 #4
0
 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)
コード例 #5
0
 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')
コード例 #6
0
 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)
コード例 #7
0
 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)
コード例 #8
0
 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)
コード例 #9
0
    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})
コード例 #10
0
    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)
コード例 #11
0
 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)