Xác thực URL truyền thông xã hội bằng Swift

May 09 2022
Bối cảnh Vào ngày lễ tình nhân 2022, Tokopedia đã giới thiệu một chương trình liên kết cho tất cả người dùng Tokopedia và công chúng. Để trở thành đơn vị liên kết, người dùng cần đăng ký tài khoản mạng xã hội của họ bằng cách sử dụng URL.
Ảnh của Thom Milkovic trên Unsplash

Lý lịch

Vào Ngày lễ tình nhân 2022, Tokopedia đã giới thiệu một chương trình liên kết cho tất cả người dùng Tokopedia và công chúng. Để trở thành đơn vị liên kết, người dùng cần đăng ký tài khoản mạng xã hội của họ bằng cách sử dụng URL. Mỗi URL mạng xã hội có một tên miền và đường dẫn URL khác nhau, vì vậy ứng dụng cần xác thực URL theo phương tiện truyền thông xã hội.

Chúng tôi đồng ý rằng regex là một trong những cách dễ nhất để giải quyết nhiều vấn đề về phân tích cú pháp Nhưng trường hợp này phức tạp do một số quy tắc cho mỗi phương tiện truyền thông xã hội và sẽ khó tùy chỉnh trong tương lai. Một số phương tiện truyền thông xã hội có nhiều hơn 1 đường dẫn URL cho trang người dùng. Ví dụ: youtube có một số đường dẫn như:

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

SuperValidator

SuperValidator là một trình xác thực dựa trên tùy chọn và là một thư viện mã nguồn mở do các kỹ sư iOS của Tokopedia quản lý. Trình xác thực cung cấp các tùy chọn để tùy chỉnh xác thực theo nhu cầu của bạn. Để tìm hiểu thêm chúng ta cùng đi qua bài viết này nhé.

Trình xác thực URL

Nếu chúng ta xem xét giải phẫu URL, chúng ta có thể tạo xác thực riêng cho từng thành phần của URL.

SuperValidator đã chia nhỏ các thành phần dưới dạng tham số, chẳng hạn như:

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

Một mảng các chuỗi cho các giao thức hợp lệ, chẳng hạn như httphoặc https. Nếu chúng tôi httpschỉ lưu trữ thì nó sẽ chỉ cho phép https.

requestProtocol

Nếu được đặt thành true thì URL phải có giao thức.

requestValidProtocol

Nếu được đặt thành true thì giao thức URL phải giống với một trong các giao thức hợp lệ được liệt kê trong các tùy chọn giao thức.

những con đường

Một mảng các chuỗi cho các đường dẫn URL /shop/{shopID}.
Có 2 loại, fixedvalue.

/shop/{shopID}

allowQueryComponents

Nếu được đặt thành false thì thành phần truy vấn và liên kết không được phép.

domainWhitelist

Một mảng các chuỗi cho miền danh sách trắng. Cũng có thể sử dụng regex.

domainBlacklist

Một mảng các chuỗi cho miền danh sách đen. Cũng có thể sử dụng regex.

FQDN

Viết tắt của Tên miền Đủ điều kiện, nó sẽ kiểm tra xem tên miền có tốt để sử dụng hay không.

Cách sử dụng cơ bản

Chúng ta chỉ có thể gọi isURLhàm để trả về một boolean chỉ ra một URL hợp lệ.

Nếu bạn muốn tùy chỉnh trình xác thực, bạn có thể đặt các thông số tùy chọn mà chúng tôi đề cập trong phần trước như thế này.

Bạn cũng có thể sử dụng validateURLhàm để trả về kết quả thành công hoặc lỗi. Bạn có thể sử dụng loại lỗi do SuperValidator cung cấp để tạo thông báo lỗi.

Trường hợp sử dụng

Hãy chia nhỏ các URL của người dùng trên mạng xã hội, chúng có các tên miền và đường dẫn khác nhau và một số trong số chúng có nhiều đường dẫn hợp lệ. Các trường hợp như thế này cũng có thể xảy ra trong các URL khác. Chúng tôi có thể tạo một enumtùy chọn lưu trữ cho mọi phương tiện truyền thông xã hội.

Sau đó, bạn có thể sử dụng isURLhoặc validateURLhoạt động từ SuperValidator.

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

Bạn có thể sử dụng validateURLđể lấy lý do lỗi và cung cấp cho người dùng.

Để biết thêm các trường hợp thử nghiệm, bạn có thể xem liên kết này .

Trình xác thực khác

Bên cạnh URL, có một số trình xác thực mà SuperValidator đã đề cập.

FQDN

Giúp xác thực tên miền đủ điều kiện. ( Wikipedia )

E-mail

Giúp xác thực email với các tùy chọn như giới hạn độ dài của phần cục bộ , danh sách trắng và miền danh sách đen.

Số điện thoại

Giúp xác thực số điện thoại với các định dạng Giao thức cấp phép mở rộng, Bắc Mỹ và Quốc tế, xác thực mã quốc gia hoặc tiền tố quốc gia .

Các kế hoạch trong tương lai

  • Trình xác thực khác
  • Liên kết với UITextField
  • Liên kết với RxSwift

Kêu gọi cộng tác viên !! SuperValidator là mã nguồn mở và chúng tôi rất vui được lắng nghe và học hỏi từ bạn. Trải nghiệm của bạn sẽ mang lại lợi ích cho những người khác sử dụng SuperValidator. Hãy làm cho nó tốt hơn nữa!

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

Tín dụng

Cảm ơn Christopher Teddy đã giúp phát triển. Kudo cho Biệt đội Siêu nhân và tất cả các nhà phát triển đã giúp điều này xảy ra.

Như mọi khi, chúng tôi có một buổi khai trương tại Tokopedia.
Chúng tôi là một công ty công nghệ của Indonesia với sứ mệnh dân chủ hóa thương mại thông qua công nghệ và giúp mọi người đạt được nhiều thành tựu hơn.
Tìm Công việc Mơ ước của bạn với chúng tôi trong Tokopedia!
https://www.tokopedia.com/careers/

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