| 70 | - Default is 'js' which uses the JavaScript endpoint |
| 71 | - Blacklist checks and verification always use NoJS regardless of this setting")] |
| 72 | pub struct Args { |
| 73 | /// Operation mode: quick (read from file), full (generate based on country format), blacklist, email, or csv |
| 74 | #[arg(value_enum, short = 'm', long, help_heading = "REQUIRED")] |
| 75 | pub mode: Mode, |
| 76 | |
| 77 | /// Country code for input file or number generation (e.g., 'sg' for Singapore) |
| 78 | /// Required when using quick mode, full mode, or blacklist mode. |
| 79 | #[arg(short = 'c', long, required_if_eq_any([("mode", "Quick"), ("mode", "Full")]), help_heading = "REQUIRED")] |
| 80 | pub country_code: Option<String>, |
| 81 | |
| 82 | /// Path to input file with phone numbers, emails, or CSV data (one per line) |
| 83 | /// Required for quick, email, or csv mode |
| 84 | #[arg(short = 'i', long, required_if_eq_any([("mode", "Email"), ("mode", "Csv")]), help_heading = "FILE INPUT")] |
| 85 | pub input_file: Option<String>, |
| 86 | |
| 87 | /// First name for lookup (case sensitive) |
| 88 | /// Used to verify the account holder's name. |
| 89 | #[arg(short = 'f', long, default_value = "", help_heading = "LOOKUP INFO")] |
| 90 | pub first_name: String, |
| 91 | |
| 92 | /// Last name for lookup (case sensitive, can be empty) |
| 93 | /// Used to verify the account holder's name. Use empty string if no last name is needed. |
| 94 | #[arg(short = 'l', long, default_value = "", help_heading = "LOOKUP INFO")] |
| 95 | pub last_name: String, |
| 96 | |
| 97 | /// IPv6 subnet in CIDR notation (e.g., "2605:6400:5355::/48") |
| 98 | /// Used for rotating IPs to avoid rate limiting. |
| 99 | #[arg(short = 's', long, required = true, help_heading = "REQUIRED")] |
| 100 | pub subnet: String, |
| 101 | |
| 102 | /// Phone number suffix to append (e.g., "00") |
| 103 | /// Optional filter that appends digits to all numbers. |
| 104 | #[arg(short = 'x', long, help_heading = "OPTIONAL")] |
| 105 | pub suffix: Option<String>, |
| 106 | |
| 107 | /// Phone number prefix that includes the area code (e.g., "910" for Singapore mobile) |
| 108 | /// When used with -c sg, -p 910 would generate numbers like +65910xxxxx |
| 109 | #[arg(short = 'p', long, help_heading = "FULL MODE")] |
| 110 | pub prefix: Option<String>, |
| 111 | |
| 112 | /// Number of digits for generated numbers (overrides country format) |
| 113 | /// Required when country format is not available. |
| 114 | #[arg(short = 'd', long, help_heading = "FULL MODE")] |
| 115 | pub digits: Option<usize>, |
| 116 | |
| 117 | /// Masked phone number pattern (e.g., "• (•••) •••-••-64" or "+1••••••••46") |
| 118 | /// Used to identify country and extract suffix from masked numbers. |
| 119 | /// Can be used with any mode to automatically determine country code and suffix. |
| 120 | /// Supports two formats: |
| 121 | /// 1. Standard format with dots for masked digits |
| 122 | /// 2. International format with + prefix (can auto-detect country and extract prefix/suffix) |
| 123 | #[arg(short = 'M', long = "mask", help_heading = "OPTIONAL")] |
| 124 | pub masked_phone: Option<String>, |
| 125 | |
| 126 | /// Number of worker threads to use |
| 127 | /// More threads can improve performance but may increase rate limiting. |
| 128 | #[arg(short = 'w', long, default_value_t = 100, help_heading = "OPTIONAL")] |
| 129 | pub workers: usize, |
nothing calls this directly
no outgoing calls
no test coverage detected