예제 #1
0
 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))
예제 #2
0
 def delete(self, user_id):
     """
         Update existed user
     """
     user = User.get(user_id, error_out=True)
     user.delete()
     return wrap_response(None, 'ok', 200)
예제 #3
0
 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)
예제 #4
0
 def get(self):
     """
     Get hello message
     :return:
     """
     _logger.info('Hello world API')
     return wrap_response('Hello world', 'ok', 200)
예제 #5
0
 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})
예제 #6
0
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
예제 #7
0
    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')
예제 #8
0
    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")
예제 #9
0
    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")
예제 #10
0
 def post(self):
     """
         logout
     """
     User.logout()
     return wrap_response(data=None, http_code=200, message='success')
예제 #11
0
 def delete(username):
     """
         Update existed user
     """
     User.delete_user(username)
     return wrap_response(None, 'ok', 200)
예제 #12
0
 def get(self):
     _logger.info('Hello world API')
     return wrap_response('Hello world', 'ok', 200)