package HTTP::DAVServer::PUT;
our $VERSION=0.1;
use strict;
use warnings;
=head1 NAME
HTTP::DAVServer::PUT - Implements the PUT method
=cut
sub handle {
my ($self, $r, $url, $responder, $request) = @_;
my $fullpath = $HTTP::DAVServer::ROOT . $url;
$url =~ m#^(.*)/([^/]+)$#;
my $path = $HTTP::DAVServer::ROOT . $1;
my $file = $2;
if ( -d $fullpath ) {
$responder->conflict( $r, "PUTONCOLL");
}
unless ( -d $path ) {
$responder->conflict( $r, "PUTNODIR");
}
my $exists = -f $fullpath ? 1 : 0;
# XXX Not checking for content-* headers => 501 Not Implemented error
open FOUT, ">$fullpath" or $responder->forbidden( $r, "PUTDENY" );
local undef $/;
print FOUT <>;
close FOUT or $responder->diskFull( $r, "PUTFULL" );
if ($exists) {
$responder->ok( $r, "PUT" );
} else {
$responder->created( $r, "PUT" );
}
}
=head1 SUPPORT
For technical support please email to jlawrenc@cpan.org ...
for faster service please include "HTTP::DAVServer" and "help" in your subject line.
=head1 AUTHOR
Jay J. Lawrence - jlawrenc@cpan.org
Infonium Inc., Canada
http://www.infonium.ca/
=head1 COPYRIGHT
Copyright (c) 2003 Jay J. Lawrence, Infonium Inc. All rights reserved.
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the
LICENSE file included with this module.
=head1 ACKNOWLEDGEMENTS
Thank you to the authors of my prequisite modules. With out your help this code
would be much more difficult to write!
XML::Simple - Grant McLean
XML::SAX - Matt Sergeant
DateTime - Dave Rolsky
Also the authors of litmus, a very helpful tool indeed!
=head1 SEE ALSO
HTTP::DAV, HTTP::Webdav, http://www.webdav.org/, RFC 2518
=cut
1;