def wrapper(*args, **kwargs): resp = f(*args, **kwargs) mask = self.mask if has_app_context(): mask_header = current_app.config['RESTPLUS_MASK_HEADER'] mask = request.headers.get(mask_header) or mask if isinstance(resp, tuple): data, code, headers = unpack(resp) return (wrap_response( marshal(data, self.fields, self.envelope, self.skip_none, mask, self.ordered)), code, headers) else: return wrap_response( marshal(resp, self.fields, self.envelope, self.skip_none, mask, self.ordered))
def delete(self, user_id): """ Update existed user """ user = User.get(user_id, error_out=True) user.delete() return wrap_response(None, 'ok', 200)
def wrap_response_with_data(self, resp, code=200): mask = self.mask if has_app_context(): mask_header = current_app.config['RESTPLUS_MASK_HEADER'] mask = request.headers.get(mask_header) or mask if isinstance(resp, dict) and all(k in resp for k in ['metadata', 'data']): return wrap_response(marshal(resp['data'], self.fields, self.envelope, mask), metadata=marshal(resp['metadata'], self.metadata), http_code=code) else: return wrap_response(marshal(resp, self.fields, self.envelope, mask), http_code=code)
def get(self): """ Get hello message :return: """ _logger.info('Hello world API') return wrap_response('Hello world', 'ok', 200)
def get(self): """ check user had password :param: :return: """ # user = User.get_logged_in_user() user = flask_login.current_user return wrap_response(http_code=200, message='OK', data={'has_password': user.password_hash is not None})
def global_error_handler(e): # traceback.print_exc() code = 500 errors = None if isinstance(e, BaseHTTPException): code = e.code if isinstance(e, HTTPException): errors = e.errors res = wrap_response(None, str(e), code) if errors: res[0]['errors'] = errors return res
def put(self): """ set or update password """ user = flask_login.current_user data = request.json old_password = data.get('current_password', "") new_password = data.get('new_password') if user.password_hash and not user.check_password(old_password): raise Forbidden("Invalid current password") user.password = new_password db.session.commit() return wrap_response(data=None, http_code=200, message='success')
def post(self): """ Login with username and password :return: """ parser = reqparse.RequestParser() parser.add_argument('email', type=str, location='json') parser.add_argument('password', type=str, location='json') params = parser.parse_args() email = params['email'] password = params['password'] if email and password: access_token = User.login_with_email_or_username(email, password) return wrap_response(http_code=200, message='OK', data=access_token) raise BadRequest("Invalid params")
def post(self): """ Login with Google id_token For testing: 1. Access https://developers.google.com/oauthplayground/ 2. Scroll to Google+ API, choose https://www.googleapis.com/auth/userinfo.email and other scope if needed 3. Click `Authorize APIs` 4. Click `Exchange authorization code for tokens` 5. Copy id_token :return: """ parser = reqparse.RequestParser() parser.add_argument('google_token', type=str, location='json') params = parser.parse_args() google_token = params['google_token'] if google_token: access_token = User.login_with_google_token(google_token) return wrap_response(http_code=200, message='OK', data=access_token) raise BadRequest("Invalid params")
def post(self): """ logout """ User.logout() return wrap_response(data=None, http_code=200, message='success')
def delete(username): """ Update existed user """ User.delete_user(username) return wrap_response(None, 'ok', 200)
def get(self): _logger.info('Hello world API') return wrap_response('Hello world', 'ok', 200)