def decrypt(environ, start_response): """ Handle OTP decryptions """ _format = 'text' try: params = parse_querystring(environ['QUERY_STRING']) if params.get('format') == 'json' or environ[ 'HTTP_ACCEPT'] == 'application/json': _format = 'json' logger.debug('PROCESSED QUERYSTRING: %s', params) decryptor = Decryptor() output = decryptor.decrypt(params.get('otp')) if _format != 'json': output = 'OK counter=%(counter)s low=%(low)s high=%(high)s use=%(use)s\n' % output status_code = 200 except YKKSMError as err: logger.exception('Decryption error: %s', err.error_code) output = '%s' % str(err) status_code = 400 except Exception as err: logger.exception('Backend error: %s', err) output = 'Backend failure\n' status_code = 500 finally: content_type = 'application/json' if _format == 'json' else 'text/plain' if _format == 'json': if isinstance(output, str): output = {'error': output} output = json.dumps(output) elif status_code != 200: output = 'ERR %s\n' % output start_response(HTTP_STATUS_CODES[status_code], [('Content-Type', content_type)]) return [output.encode()]
def decrypt(environ, start_response): """ Handle OTP decryptions """ _format = 'text' try: params = parse_querystring(environ['QUERY_STRING']) if params.get('format') == 'json' or environ['HTTP_ACCEPT'] == 'application/json': _format = 'json' logger.debug('PROCESSED QUERYSTRING: %s', params) decryptor = Decryptor() output = decryptor.decrypt(params.get('otp')) if _format != 'json': output = 'OK counter=%(counter)s low=%(low)s high=%(high)s use=%(use)s\n' % output status_code = 200 except YKKSMError as err: logger.exception('Decryption error: %s', err.error_code) output = '%s' % str(err) status_code = 400 except Exception as err: logger.exception('Backend error: %s', err) output = 'Backend failure\n' status_code = 500 finally: content_type = 'application/json' if _format == 'json' else 'text/plain' if _format == 'json': if isinstance(output, str): output = {'error': output} output = json.dumps(output) elif status_code != 200: output = 'ERR %s\n' % output start_response(HTTP_STATUS_CODES[status_code], [('Content-Type', content_type)]) return [output.encode()]
def decrypt(environ, start_response): """ Handle OTP decryptions """ try: params = parse_querystring(environ['QUERY_STRING']) logger.debug('PROCESSED QUERYSTRING: %s', params) decryptor = Decryptor() output = decryptor.decrypt(params.get('otp')) output = 'OK counter=%(counter)s low=%(low)s high=%(high)s use=%(use)s\n' % output except YKKSMError as err: logger.exception('Decryption error: %s', err) output = '%s\n' % err except Exception as err: logger.exception('Backend error: %s', err) output = 'ERR Backend failure\n' finally: start_response('200 OK', [('Content-Type', 'text/plain')]) return [output.encode()]