/usr/local/CPAN/TaskForest/TaskForest/REST/LogFile.pm


package TaskForest::REST::LogFile;

use strict;
use warnings;
use HTTP::Status;
use TaskForest::REST;
use Data::Dumper;

sub handle {
    my ($q, $parent_hash, $h) = @_;

    my $name = $h->{path_info} || '';
    my $hash = { title => "Job $name" };

    my $method = $parent_hash->{method};

    my %functions = ( PUT => \&PUT, GET => \&GET, HEAD => \&HEAD, DELETE => \&DELETE, POST => \&POST);
                      
    $functions{$method}->($q, $parent_hash, $h, $hash);

    return $hash;
}

sub POST    { &TaskForest::REST::methodNotAllowed($_[1], 'HEAD,GET'); }
sub PUT     { &TaskForest::REST::methodNotAllowed($_[1], 'HEAD,GET'); }
sub DELETE  { &TaskForest::REST::methodNotAllowed($_[1], 'HEAD,GET'); }

    

sub GET {
    my ($q, $parent_hash, $h, $hash) = @_;

    my $file_name = $h->{path_info};
    $file_name    =~ s/[^a-z0-9_\-\:\,\.\/]//ig;
    $file_name    =~ s/\.\./__/ig;
    #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $mon++; $year += 1900;
    my $log_dir = $parent_hash->{config}->{log_dir};


    # save this for the getModified function
    $hash->{_resource_file_name} = "$log_dir/$file_name";

    &TaskForest::REST::GET($q, $parent_hash, $h, $hash, { get_modified_tags => \&TaskForest::REST::getModifiedTagsForFile,
                                                          check_existence   => \&TaskForest::REST::checkExistenceForFile,
                                                          get_content       => \&TaskForest::REST::getContentForTextFile });
               

    $hash->{file_name}     = $file_name;
    
}

sub HEAD {
    my ($q, $parent_hash, $h, $hash) = @_;

    my $file_name = $h->{path_info};
    $file_name    =~ s/[^a-z0-9_\-\:\,\.]//ig;
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $mon++; $year += 1900;
    my $log_dir = sprintf("$parent_hash->{config}->{log_dir}/%4d%02d%02d", $year, $mon, $mday);

    # save this for the getModified function
    $hash->{_resource_file_name} = "$log_dir/$file_name";

    &TaskForest::REST::HEAD($q, $parent_hash, $h, $hash, { get_modified_tags => \&TaskForest::REST::getModifiedTagsForFile,
                                                          check_existence   => \&TaskForest::REST::checkExistenceForFile});
               

    $hash->{file_name}     = $file_name;
    
}

1;