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 )