"""voucherify microservice connector.""" from voucherify import Client as VoucherifyClient from lambdacommon.common_config import logger import config def validate_voucher(voucher, source_id) -> dict: """Validate validate_voucher via voucherify.""" response = {'valid': None} if not voucher or not source_id: return response client = VoucherifyClient( application_id=config.VOUCHERIFY_APPLICATION_ID, client_secret_key=config.VOUCHERIFY_CLIENT_SECRET, api_endpoint='https://us1.api.voucherify.io', timeout=180 ) params = { 'customer': { "source_id": source_id } } result = client.validations.validateVoucher(voucher, params) if result and 'valid' in result and result['valid'] is True: response['valid'] = True voucher_details = client.vouchers.get(voucher) if voucher_details and 'referrer_id' in voucher_details: customer = client.customers.get(voucher_details['referrer_id']) if customer and 'email' in customer: response['voucher_code_owner'] = customer['email'] if 'metadata' in customer and 'consultant' in customer['metadata']: response['consultant'] = customer['metadata']['consultant'] is True else: logger.error( 'Voucherify get customer failed. Errors: [%s]', str(customer)) else: logger.error( 'Voucherify get voucher failed. Errors: [%s]', str(voucher_details)) else: logger.error( 'Voucherify validation failed. Errors: [%s]', str(response)) return response