#phone-number #mobile #networking #prefix #error-response #input-validation #philippines

ph-mobile-network

一个基于电话号码前缀识别菲律宾移动网络运营商的库

5个版本

0.1.4 2024年4月28日
0.1.3 2024年4月28日
0.1.2 2024年4月28日
0.1.1 2024年4月28日
0.1.0 2024年4月27日

#156 in 调试

Download history 318/week @ 2024-04-27 9/week @ 2024-05-04 4/week @ 2024-05-18 1/week @ 2024-05-25

每月104次下载

MIT许可证

43KB
940

PH移动网络库

Rust

PH移动网络库为根据菲律宾电话号码前缀识别和验证移动网络运营商提供了强大的解决方案。它支持Globe、Smart、Sun、TNT和Dito等网络,并确保对常见输入错误进行全面的验证。

特性

  • 网络识别:根据给定的电话号码前缀识别网络运营商。
  • 可以重置特定移动网络为空集合
  • 在编译时添加移动网络前缀
  • 输入验证:验证电话号码的正确长度和数字一致性。
  • 错误处理:对各种输入和内部处理问题提供详细的错误响应。

安装

将此添加到你的 Cargo.toml

[dependencies]
ph-mobile-network = "0.1.4"

使用方法

要使用此库,将其包含在Rust文件中,并使用MobileNetwork::get函数确定电话号码的网络并验证它

examples/main.rs

use ph_mobile_network::mobile_network::MobileNetwork;
use ph_mobile_network::mutate::{append_dito_prefixes, append_globe_prefixes, append_smart_prefixes, append_sun_prefixes, append_tnt_prefixes, reset_dito_prefixes, reset_globe_prefixes, reset_smart_prefixes, reset_sun_prefixes, reset_tnt_prefixes};
use ph_mobile_network::validate::Validate;


fn main() {
    // if for some reason the default library prefixes has invalid values you can always reset it
    reset_dito_prefixes();
    reset_globe_prefixes();
    reset_smart_prefixes();
    reset_sun_prefixes();
    reset_tnt_prefixes();
    // if the current prefix isnt supported yet by the library you can always append it on compile time
    // append new prefixes on different networks
    append_dito_prefixes(&["0911", "0912"]); // Adding new TNT prefixes
    append_globe_prefixes(&["0917", "0996"]); // Adding new Globe prefixes
    append_smart_prefixes(&["0918", "0919"]); // Adding new Smart prefixes
    append_sun_prefixes(&["0933", "0934"]); // Adding new Sun prefixes
    append_tnt_prefixes(&["0899", "0900"]); // Adding new Dito prefixes

    // Example phone number to validate
    let number = "09171234567";

    // Get the network based on the phone number and validate the number
    match MobileNetwork::get(number) {
        Ok(network) => {
            println!("Network identified: {}", network.to_string());
            match network.validate(number) {
                Ok(valid) => println!("Validation result: {}", valid),
                Err(e) => println!("Validation error: {:?}", e),
            }
        },
        Err(e) => println!("Error retrieving network: {:?}", e),
    }
}

运行:cargo run --example main

输出

cargo run --example main
   Compiling ph-mobile-network v0.1.1 (/Users/uriah/Code/ph-mobile-network)
    Finished dev [unoptimized + debuginfo] target(s) in 0.25s
     Running `target/debug/examples/main`
Network identified: globe
Validation result: true

错误处理

该库定义了多个错误以管理可能的失败场景

  • InvalidLength:电话号码不符合所需长度。
  • NonNumeric:电话号码包含非数字字符。
  • UnrecognizedPrefix:电话号码前缀不匹配任何已知网络。
  • RegexError:在编译用于验证的正则表达式时出现错误。
  • MutexError:当你无法获取Mutex锁时发生。

这些错误封装在 MobileNetworkError 枚举中。

使用Rust强大的错误处理功能处理错误,允许进行详细的调试和恢复选项。

贡献

注意:如果库中存在缺失的前缀、无效的前缀,请提交PR,所有前缀都定义在 ./src/globals

欢迎贡献!如果您想贡献,请分叉仓库并提交一个pull请求。

  1. 分叉它 (https://github.com/codeitlikemiley/ph-mobile-network/fork)
  2. 创建您的功能分支 (git checkout -b missing-prefix/xxxx)
  3. 提交您的更改 (git commit -am '在MobileNetwork::{Variants}上添加xxxx前缀')
  4. 推送到分支 (git push origin missing-prefix/xxxx)
  5. 创建一个新的Pull Request

许可证

本项目受MIT许可证许可 - 详细信息请参阅LICENSE文件。

依赖项

~2–3MB
~53K SLoC