Saltar al contenido principal

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étodoRetornaDescripción
ValidateEmail(ctx, address)*EmailValidationResultValidación de formato de email, MX, desechable, proveedor gratuito
ValidatePhone(ctx, number, countryCode)*PhoneValidationResultValidación de teléfono (countryCode vacío = omitir)
GeolocateIP(ctx, ip)*IPGeolocationGeolocalización IP + ASN (ip vacío = IP del llamante)
ValidateVat(ctx, countryCode, number)*VatValidationResultValidación de IVA UE vía VIES
ParseUserAgent(ctx, ua)*UserAgentResultAnálisis de UA — navegador, SO, marca y modelo del dispositivo
ValidateIban(ctx, iban)*IbanValidationResultEstructura IBAN, suma de verificación, información del banco
ValidateBic(ctx, bic)*BicValidationResultFormato BIC/SWIFT, información de la institución
LookupDns(ctx, domain, types)*DnsLookupResultRegistros DNS, seguridad SPF/DKIM/DMARC
CheckSsl(ctx, domain)*SslCertificateResultCertificado SSL, cadena, calificación
AnalyzePassword(ctx, password)*PasswordStrengthResultPuntuación de fortaleza, tiempo de descifrado, verificación de filtraciones
ValidateCreditCard(ctx, number)*CreditCardValidationResultVerificación Luhn, red de tarjeta, consulta BIN
LastRateLimitInfo()*RateLimitInfoLí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/http de la biblioteca estándar)