Validación de URL de redes sociales en Swift

May 09 2022
Antecedentes En el Día de San Valentín de 2022, Tokopedia presentó un programa de afiliados para todos los usuarios de Tokopedia y el público. Para convertirse en afiliado, los usuarios deben registrar sus cuentas de redes sociales utilizando las URL.
Foto de Thom Milkovic en Unsplash

Fondo

El Día de San Valentín de 2022, Tokopedia presentó un programa de afiliados para todos los usuarios de Tokopedia y el público. Para convertirse en afiliado, los usuarios deben registrar sus cuentas de redes sociales utilizando las URL. Cada URL de red social tiene un dominio y una ruta de URL diferentes, por lo que la aplicación debe validar la URL de acuerdo con la red social.

Estamos de acuerdo en que regex es una de las formas más fáciles de resolver muchos problemas de análisis. Pero este caso es complejo debido a varias reglas para cada red social y será difícil personalizarlo en el futuro. Algunas redes sociales tienen más de una ruta URL para la página del usuario. Por ejemplo, youtube tiene varios caminos como:

https://www.youtube.com/user/example
https://www.youtube.com/c/coldplay
https://www.youtube.com/channel/UC9zY...

supervalidador

SuperValidator es un validador basado en opciones y una biblioteca de código abierto administrada por los ingenieros de iOS de Tokopedia. El validador proporciona opciones para personalizar la validación según sus necesidades. Para obtener más información, repasemos este artículo.

Validador de URL

Si observamos la anatomía de la URL, podemos crear una validación separada para cada uno de los componentes de la URL.

SuperValidator ha dividido los componentes como parámetros, como:

protocols: [String] = ["https", "http", "ftp"],
requireProtocol: Bool = false,
requireValidProtocol: Bool = true,
paths: [String] = [],
allowQueryComponents: Bool = true,
domainWhitelist: [String] = [],
domainBlacklist: [String] = [],
fqdn: FQDN = .init() // Fully Qualified Domain Name

Una matriz de cadenas para protocolos válidos, como httpo https. Si almacenamos httpssolo, solo permitirá https.

requireProtocol

Si se establece en verdadero, la URL debe tener un protocolo.

requireValidProtocol

Si se establece en verdadero, el protocolo de URL debe ser el mismo que uno de los protocolos válidos enumerados en las opciones de protocolos.

caminos

Una matriz de cadenas para rutas de URL /shop/{shopID}.
Hay 2 tipos, fixedy value.

/shop/{shopID}

allowQueryComponents

Si se establece en falso, el componente de consulta y el ancla no están permitidos.

dominioLista blanca

Una matriz de cadenas para el dominio de la lista blanca. También puede usar expresiones regulares.

lista negra de dominio

Una matriz de cadenas para el dominio de la lista negra. También puede usar expresiones regulares.

FQDN

Representa el nombre de dominio totalmente calificado, verificará si el dominio está listo para funcionar.

Uso básico

Simplemente podemos llamar isURLa la función para devolver un valor booleano que indique una URL válida.

Si desea personalizar el validador, puede configurar los parámetros de opciones que cubrimos en la sección anterior de esta manera.

También puede usar validateURLla función para devolver un resultado de éxito o error. Puede utilizar el tipo de error proporcionado por SuperValidator para generar un mensaje de error.

Casos de uso

Desglosemos las URL de usuario de las redes sociales, tienen diferentes dominios y rutas, y algunas de ellas tienen múltiples rutas válidas. Casos como este también pueden darse en otras URLs. Podemos crear una enumopción de almacenamiento para cada red social.

Entonces puede usar isURLo validateURLfuncionar desde SuperValidator.

SuperValidator.shared.isURL(
   "https://instagram.com/myuser", 
   options: SocialMediaURL.instagram.options
)

Puede utilizar validateURLpara obtener los motivos del error y dárselo al usuario.

Para más casos de prueba, puede ver este enlace .

Otros validadores

Además de URL, hay varios validadores que SuperValidator ya cubre.

FQDN

Ayude a validar el nombre de dominio completo. ( Wikipedia )

Correo electrónico

Ayude a validar el correo electrónico con opciones como el límite de longitud de la parte local , la lista blanca y el dominio de la lista negra.

Número de teléfono

Ayude a validar el número de teléfono con formatos de protocolo de aprovisionamiento extensible, norteamericano e internacional, valide el código de país o el prefijo nacional .

Planes futuros

  • Más validadores
  • Vincular con UITextField
  • Enlace con RxSwift

¡¡Llamando a colaboradores!! SuperValidator es de código abierto y nos complace escucharlo y aprender de usted. Sus experiencias beneficiarán a otros que usan SuperValidator. ¡Hagámoslo aún mejor!

https://github.com/tokopedia/ios-supervalidator

Créditos

Gracias a Christopher Teddy por ayudar con el desarrollo. Felicitaciones al equipo de Superman y a todos los desarrolladores que ayudaron a que esto sucediera.

Como siempre, tenemos una vacante en Tokopedia.
Somos una empresa de tecnología de Indonesia con la misión de democratizar el comercio a través de la tecnología y ayudar a todos a lograr más.
¡Encuentra el trabajo de tus sueños con nosotros en Tokopedia!
https://www.tokopedia.com/careers/

© Copyright 2021 - 2022 | unogogo.com | All Rights Reserved