Beispiel #1
0
 def get_jwt_token_info(request):
     status = 200
     token_info = {}
     token = request.cookies.get('token')
     app = Config.getApp()
     if not token:
         app.logger.debug(__name__ + ' token is NOT available')
         status = 401
         return status, token_info
     else:
         status_str, token_info = decode_jwt_token(token)
         app.logger.debug(__name__ + ' obtained token info: ' +
                          str(token_info) + ' status: ' + status_str)
         if status_str != 'ok':  # could be anonymous, but they're still not logged in
             status = 401
         return status, token_info
Beispiel #2
0
def decode_jwt_token(token):
    status = 'ok'
    payload = {}
    app = Config.getApp()
    try:
        payload = jwt.decode(token, key)
        payload = remap_jwt_token(payload)
        if payload['sub'] == 'anonymous' or payload['isAnonymous'] == 'true':
            status = 'anonymous'
        app.logger.debug(__name__ + ' returning: ' + status + ' payload: ' +
                         str(payload))
        return status, payload
    except jwt.ExpiredSignatureError:
        status = 'expired'
        app.logger.debug(__name__ + ' returning: ' + status + ' payload: ' +
                         str(payload))
        return status, payload
    except jwt.InvalidTokenError:
        status = 'invalid'
        app.logger.debug(__name__ + ' returning: ' + status + ' payload: ' +
                         str(payload))
        return status, payload
Beispiel #3
0
    def get(self):
        """get chemprops info based on search criteria"""
        callParams = ('ChemicalName', 'Abbreviation', 'TradeName', 'uSMILES')
        parser = reqparse.RequestParser(
        )  # marshmallow is preferred parser, this is technically deprecated but supported long term
        parser.add_argument('polfil',
                            required=True,
                            help=ChemPropsApiDoc.getDoc('get', '/', 'polfil'))
        parser.add_argument('nmId',
                            required=True,
                            help=ChemPropsApiDoc.getDoc('get', '/', 'nmId'))
        for p in callParams:
            parser.add_argument(p,
                                required=(p == 'ChemicalName'),
                                help=ChemPropsApiDoc.getDoc('get', '/', p))

        args = parser.parse_args()
        cp = nmChemPropsAPI(args['nmId'])
        polfil = args['polfil']
        params = dict()
        for p in callParams:
            if args[p] is not None:
                params[p] = args[p]
        rv = {}
        data = None
        try:
            if polfil == 'fil':
                # filler
                rv = cp.searchFillers(params)
                if rv is not None:
                    data = {
                        'StandardName': rv['_id'],
                        'density': rv['_density']
                    }
                    marshal(data, ChemPropsDto.chemprops)
                    Config.getApp().logger.debug(__name__ +
                                                 ' chemprops.get(\'' + polfil +
                                                 '\', ' + str(params) +
                                                 '): returned - ' + str(rv))
            elif polfil == 'pol':
                # polymer
                rv = cp.searchPolymers(params)
                if rv is not None:
                    Config.getApp().logger.debug(__name__ +
                                                 ' chemprops.get(\'' + polfil +
                                                 '\', ' + str(params) +
                                                 '): returned - ' + str(rv))
                    data = {
                        'StandardName': rv['_stdname'],
                        'density': rv['_density'],
                        'uSMILES': rv['_id']
                    }
                    marshal(data, ChemPropsDto.chemprops)
            else:
                return None, 400  # pol or fil required

            if data is not None:
                return data, 200
            else:
                return None, 404

        except:
            fullStr = traceback.format_exc()
            Config.getApp().logger.error(__name__ +
                                         'error executing chemprops.get(\'' +
                                         polfil + '\', ' + str(params) +
                                         '): ' + fullStr)
            # data.StandardName = ''
            # data.density = float('nan')
            return None, 500