import pymysql
import urllib.request
import urllib.parse
import base64

conn = pymysql.connect(
    host='85.215.144.168',
    user='asesoft',
    password='Pantera1',
    database='pastelerias',
    charset='utf8mb4'
)

cursor = conn.cursor(pymysql.cursors.DictCursor)
cursor.execute("SELECT * FROM ge_envios_config WHERE activo = 1 AND transportista_id IN (SELECT id FROM ge_envios_transportistas WHERE tipo_api = 'NACEX')")
configs = cursor.fetchall()
for cfg in configs:
    print('Config ID:', cfg['id'])
    print('Entorno:', cfg['entorno'])
    print('url_produccion:', cfg['url_produccion'])
    print('url_pruebas:', cfg['url_pruebas'])
    print('cod_agencia:', cfg['cod_agencia'], 'cod_cliente:', cfg['cod_cliente'], 'password:', cfg['password'])
    print('cod_agencia_val:', cfg['cod_agencia_val'], 'cod_cliente_val:', cfg['cod_cliente_val'], 'password_val:', cfg['password_val'])
    print('modelo_impresora:', cfg['modelo_impresora'])

    url = cfg['url_produccion'] if not cfg['entorno'] else cfg['url_pruebas']
    user = cfg['cod_cliente'].split('/')[0] if not cfg['entorno'] else cfg['cod_cliente_val'].split('/')[0]
    password = cfg['password'] if not cfg['entorno'] else cfg['password_val']
    
    ref = '0336/10396397'
    modelo = cfg['modelo_impresora'] or 'PDF_B'
    parts = ref.split('/')
    data = f'agencia={parts[0]}|numero={parts[1]}|modelo={modelo}'
    
    post_data = urllib.parse.urlencode({
        'method': 'getEtiqueta',
        'user': user,
        'pass': password,
        'data': data
    }).encode('utf-8')
    
    print('Sending POST to', url, 'with data:', post_data[:100])
    req = urllib.request.Request(url, data=post_data, headers={'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'})
    try:
        resp = urllib.request.urlopen(req)
        content = resp.read()
        print('Resp length raw:', len(content))
        print('Resp raw head 200:', content[:200])
        print('Resp raw tail 200:', content[-200:])
        
        # Intentar base64 decode
        try:
            decoded = base64.b64decode(content.strip())
            print('Decoded length:', len(decoded))
            print('Decoded head 50:', decoded[:50])
            print('Decoded tail 50:', decoded[-50:])
        except Exception as e:
            print('Base64 decode error:', e)
    except Exception as e:
        print('Request error:', e)
conn.close()
