SDK de Go
github.com/Neivi-IT/iqx-lookup-go — Cliente Go 1.21+ para la API de IQX Lookup usando net/http (sin dependencias).
Instalación
go get github.com/Neivi-IT/iqx-lookup-go
Inicio Rápido
package main
import (
"context"
"fmt"
"log"
iqxlookup "github.com/Neivi-IT/iqx-lookup-go"
)
func main() {
client := iqxlookup.New("ALk-your-api-key")
ctx := context.Background()
// Validate an email
email, err := client.ValidateEmail(ctx, "user@example.com")
if err != nil {
log.Fatal(err)
}
fmt.Println("Valid format:", email.ValidFormat)
fmt.Println("Disposable:", email.DisposableEmail)
// Validate a phone number
phone, err := client.ValidatePhone(ctx, "+34912345678", "ES")
if err != nil {
log.Fatal(err)
}
fmt.Println("Valid:", phone.Valid)
// Geolocate an IP
ip, err := client.GeolocateIP(ctx, "8.8.8.8")
if err != nil {
log.Fatal(err)
}
fmt.Println("Country:", ip.CountryName)
// Validate a VAT number
vat, err := client.ValidateVat(ctx, "ES", "B87387775")
if err != nil {
log.Fatal(err)
}
fmt.Println("Valid:", vat.Valid)
// Parse a user-agent string
ua, err := client.ParseUserAgent(ctx, "Mozilla/5.0...")
if err != nil {
log.Fatal(err)
}
fmt.Println("Browser:", ua.BrowserFamily)
}
Configuración
import "time"
// With options
client := iqxlookup.New("ALk-your-api-key",
iqxlookup.WithBaseURL("https://api.iqxlookup.neivi.es"), // optional
iqxlookup.WithTimeout(15 * time.Second), // optional, default 10s
)
Referencia de la API
Todos los métodos toman context.Context como primer parámetro y devuelven (result, error):
| Método | Retorna | Descripción |
|---|---|---|
ValidateEmail(ctx, address) | *EmailValidationResult | Validación de formato de email, MX, desechable, proveedor gratuito |
ValidatePhone(ctx, number, countryCode) | *PhoneValidationResult | Validación de teléfono (countryCode vacío = omitir) |
GeolocateIP(ctx, ip) | *IPGeolocation | Geolocalización IP + ASN (ip vacío = IP del llamante) |
ValidateVat(ctx, countryCode, number) | *VatValidationResult | Validación de IVA UE vía VIES |
ParseUserAgent(ctx, ua) | *UserAgentResult | Análisis de UA — navegador, SO, marca y modelo del dispositivo |
ValidateIban(ctx, iban) | *IbanValidationResult | Estructura IBAN, suma de verificación, información del banco |
ValidateBic(ctx, bic) | *BicValidationResult | Formato BIC/SWIFT, información de la institución |
LookupDns(ctx, domain, types) | *DnsLookupResult | Registros DNS, seguridad SPF/DKIM/DMARC |
CheckSsl(ctx, domain) | *SslCertificateResult | Certificado SSL, cadena, calificación |
AnalyzePassword(ctx, password) | *PasswordStrengthResult | Puntuación de fortaleza, tiempo de descifrado, verificación de filtraciones |
ValidateCreditCard(ctx, number) | *CreditCardValidationResult | Verificación Luhn, red de tarjeta, consulta BIN |
LastRateLimitInfo() | *RateLimitInfo | Límite de peticiones de la última respuesta |
Manejo de Errores
Usa errors.As para verificación tipada de errores:
import "errors"
email, err := client.ValidateEmail(ctx, "user@example.com")
if err != nil {
var rateLimitErr *iqxlookup.RateLimitError
var unauthorizedErr *iqxlookup.UnauthorizedError
if errors.As(err, &rateLimitErr) {
fmt.Printf("Retry after: %ds\n", rateLimitErr.RetryAfter)
} else if errors.As(err, &unauthorizedErr) {
fmt.Println("Check your API key")
} else {
fmt.Println("Error:", err)
}
}
Requisitos
- Go 1.21+
- Sin dependencias externas (usa
net/httpde la biblioteca estándar)