package Apache::RandPicture;

use strict;
use Apache::Constants qw(:common REDIRECT);
use DirHandle ();

sub handler {
    my $r = shift;
    my $dir_uri = $r->dir_config('PictureDir');
    unless ($dir_uri) {
	$r->log_reason("No PictureDir configured");
	return SERVER_ERROR;
    }
    $dir_uri .= "/" unless $dir_uri =~ m:/$:;

    my $subr = $r->lookup_uri($dir_uri);
    my $dir = $subr->filename;
    # Get list of images in the directory.
    my $dh = DirHandle->new($dir);
    unless ($dh) {
	$r->log_error("Can't read directory $dir: $!");
	return SERVER_ERROR;
    }

    my @files;
    for my $entry ($dh->read) {
	# get the file's MIME type
	my $rr = $subr->lookup_uri($entry);
	my $type = $rr->content_type;
	next unless $type =~ m:^image/:;
	push @files, $rr->uri;
    }
    $dh->close;
    unless (@files) {
	$r->log_error("No image files in directory");
	return SERVER_ERROR;
    }

    my $lucky_one = $files[rand @files];
    $r->header_out(Location => $lucky_one);
    return REDIRECT;
}

1;
__END__
