/usr/local/CPAN/XML-EP/XML/EP/Producer/File.pm


# -*- perl -*-

use strict;

use XML::DOM ();

package XML::EP::Producer::File;

$XML::EP::Producer::File::VERSION = '0.01';


sub new {
    my $proto = shift;
    my $self = (@_ == 1) ? \%{ shift() } : { @_ };
    bless($self, (ref($proto) || $proto));
}

sub Produce {
    my $self = shift;  my $ep = shift;
    my $request = $ep->Request();
    my $path = $request->PathTranslated() || $request->PathInfo() ||
	die XML::EP::Error->new("Missing path specification", 500);
    die XML::EP::Error->new("No such file or directory", 404)
	unless -f $path;
    $ep->{'path'} = $path;
    $ep->{'path_mtime'} = (stat _)[9];
    my $parser = XML::DOM::Parser->new();
    my $xml = $parser->parsefile($path)  ||
        die XML::EP::Error->new("Failed to parse $path", 500);
    $xml;
}


1;