App-dnsq
view release on metacpan or search on metacpan
lib/DNSQuery/Validator.pm view on Meta::CPAN
return (1, undef);
}
=head2 validate_query_class($class)
Validates a DNS query class.
Returns: (1, undef) on success, (0, error_message) on failure.
=cut
sub validate_query_class {
my ($class) = @_;
return (0, "Query class is required")
unless defined $class && length($class) > 0;
my $uc_class = uc($class);
return (0, "Invalid query class: $class")
unless $VALID_QUERY_CLASSES{$uc_class};
return (1, undef);
}
=head2 validate_port($port)
Validates a network port number.
Returns: (1, undef) on success, (0, error_message) on failure.
=cut
sub validate_port {
my ($port) = @_;
return (0, "Port is required")
unless defined $port;
return (0, "Port must be numeric")
unless $port =~ /^\d+$/;
return (0, "Port must be between $MIN_PORT and $MAX_PORT")
if $port < $MIN_PORT || $port > $MAX_PORT;
return (1, undef);
}
=head2 validate_timeout($timeout)
Validates a timeout value in seconds.
Returns: (1, undef) on success, (0, error_message) on failure.
=cut
sub validate_timeout {
my ($timeout) = @_;
return (0, "Timeout is required")
unless defined $timeout;
return (0, "Timeout must be numeric")
unless $timeout =~ /^\d+$/;
return (0, "Timeout must be at least $MIN_TIMEOUT second(s)")
if $timeout < $MIN_TIMEOUT;
return (1, undef);
}
=head2 validate_retries($retries)
Validates a retry count.
Returns: (1, undef) on success, (0, error_message) on failure.
=cut
sub validate_retries {
my ($retries) = @_;
return (0, "Retries value is required")
unless defined $retries;
return (0, "Retries must be numeric")
unless $retries =~ /^\d+$/;
return (0, "Retries must be at least $MIN_RETRIES")
if $retries < $MIN_RETRIES;
return (1, undef);
}
=head2 validate_file_path($path, $must_exist)
Validates a file path for batch processing.
If $must_exist is true, checks that the file exists and is readable.
Returns: (1, undef) on success, (0, error_message) on failure.
=cut
sub validate_file_path {
my ($path, $must_exist) = @_;
return (0, "File path is required")
unless defined $path && length($path) > 0;
return (1, undef) unless $must_exist;
return (0, "File does not exist: $path")
unless -e $path;
return (0, "Not a regular file: $path")
unless -f $path;
return (0, "File is not readable: $path")
unless -r $path;
my $size = -s $path;
return (0, "File is empty: $path")
if $size == 0;
return (0, "File too large (max " . int($MAX_BATCH_FILE_SIZE / 1_000_000) . "MB): $path")
( run in 0.768 second using v1.01-cache-2.11-cpan-39bf76dae61 )