Codex
Email checker with OpenAI Codex CLI. Verify emails in Codex automation.
OpenAI Codex CLI proporciona generación de código y asistencia en terminal con IA. Aprende cómo integrar EmailVerify para tareas de verificación de correo electrónico.
¿Qué es Codex CLI?
Codex CLI es la herramienta de línea de comandos de OpenAI que aprovecha el modelo Codex para:
- Traducción de lenguaje natural a código
- Generación de comandos de shell
- Completado y depuración de código
- Automatización de tareas
Configuración
Instalar EmailVerify CLI
npm install -g @emailverify/cli
bv config set api-key YOUR_API_KEYConfigurar Entorno
export EMAILVERIFY_API_KEY=your-api-key
export OPENAI_API_KEY=your-openai-keyEjemplos de Uso
Generar Script de Verificación
Prompt: Escribe un script Python que verifique una lista de correos electrónicos usando la API de EmailVerify
Salida de Codex:
import os
import requests
from typing import List, Dict
def verify_emails(emails: List[str]) -> List[Dict]:
"""Verifica una lista de direcciones de correo electrónico usando la API de EmailVerify."""
api_key = os.environ.get('EMAILVERIFY_API_KEY')
results = []
for email in emails:
response = requests.post(
'https://api.emailverify.ai/v1/verify',
headers={
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json',
},
json={'email': email}
)
results.append(response.json())
return results
def main():
emails = [
'test@example.com',
'user@gmail.com',
'fake@mailinator.com',
]
results = verify_emails(emails)
for result in results:
status = '✅' if result['status'] == 'valid' else '❌'
print(f"{status} {result['email']}: {result['status']}")
if __name__ == '__main__':
main()Generar Comando de Shell
Prompt: Un one-liner para verificar todos los correos electrónicos en la segunda columna de un archivo CSV
Salida de Codex:
cut -d',' -f2 users.csv | tail -n +2 | while read email; do bv verify "$email" --quiet && echo "✅ $email" || echo "❌ $email"; doneGenerar Casos de Prueba
Prompt: Genera pruebas Jest para una función de verificación de correo electrónico
Salida de Codex:
import { verifyEmail } from './email-service';
describe('Email Verification', () => {
beforeAll(() => {
process.env.EMAILVERIFY_API_KEY = 'test-api-key';
});
test('valida el formato de correo electrónico correcto', async () => {
const result = await verifyEmail('user@example.com');
expect(result).toHaveProperty('status');
expect(result).toHaveProperty('score');
});
test('rechaza formato de correo electrónico inválido', async () => {
const result = await verifyEmail('not-an-email');
expect(result.status).toBe('invalid');
});
test('detecta correos electrónicos desechables', async () => {
const result = await verifyEmail('test@mailinator.com');
expect(result.result.disposable).toBe(true);
});
test('maneja errores de API con elegancia', async () => {
// Simular error de red
const result = await verifyEmail('test@example.com');
expect(result).not.toBeNull();
});
});Generar Integración de API
Prompt: Crea un módulo Node.js para integración con EmailVerify con caché
Salida de Codex:
import NodeCache from 'node-cache';
interface VerificationResult {
email: string;
status: 'valid' | 'invalid' | 'unknown';
score: number;
result: {
deliverable: boolean;
disposable: boolean;
role: boolean;
};
}
class EmailVerifyClient {
private apiKey: string;
private cache: NodeCache;
private baseUrl = 'https://api.emailverify.ai/v1';
constructor(apiKey: string, cacheTTL: number = 3600) {
this.apiKey = apiKey;
this.cache = new NodeCache({ stdTTL: cacheTTL });
}
async verify(email: string): Promise<VerificationResult> {
// Verificar caché primero
const cached = this.cache.get<VerificationResult>(email);
if (cached) return cached;
const response = await fetch(`${this.baseUrl}/verify`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ email }),
});
const result = await response.json();
// Cachear el resultado
this.cache.set(email, result);
return result;
}
async verifyBulk(emails: string[]): Promise<VerificationResult[]> {
const response = await fetch(`${this.baseUrl}/verify/bulk`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ emails }),
});
return response.json();
}
}
export default EmailVerifyClient;Patrones de Generación de Código
Patrón 1: Middleware de Validación
Prompt: Middleware Express para validar correo electrónico en el cuerpo de la solicitud
import { Request, Response, NextFunction } from 'express';
export const validateEmail = async (
req: Request,
res: Response,
next: NextFunction
) => {
const { email } = req.body;
if (!email) {
return res.status(400).json({ error: 'El correo electrónico es requerido' });
}
const response = await fetch('https://api.emailverify.ai/v1/verify', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.EMAILVERIFY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ email }),
});
const result = await response.json();
if (result.status === 'invalid') {
return res.status(400).json({ error: 'Dirección de correo electrónico inválida' });
}
if (result.result.disposable) {
return res.status(400).json({ error: 'No se permiten correos electrónicos desechables' });
}
req.verificationResult = result;
next();
};Patrón 2: Hook de React
Prompt: Hook de React para verificación de correo electrónico con debounce
import { useState, useEffect } from 'react';
import { useDebouncedCallback } from 'use-debounce';
interface VerificationState {
isLoading: boolean;
isValid: boolean | null;
result: any;
error: string | null;
}
export function useEmailVerification(debounceMs: number = 500) {
const [state, setState] = useState<VerificationState>({
isLoading: false,
isValid: null,
result: null,
error: null,
});
const verify = useDebouncedCallback(async (email: string) => {
if (!email || !email.includes('@')) {
setState({ isLoading: false, isValid: null, result: null, error: null });
return;
}
setState(prev => ({ ...prev, isLoading: true, error: null }));
try {
const response = await fetch('/api/verify-email', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email }),
});
const result = await response.json();
setState({
isLoading: false,
isValid: result.status === 'valid',
result,
error: null,
});
} catch (error) {
setState({
isLoading: false,
isValid: null,
result: null,
error: 'Verificación fallida',
});
}
}, debounceMs);
return { ...state, verify };
}