NAME
   HTTP::DAVServer - allows you to write server-side functions to accept,
   process and respond to WebDAV client requests. WebDAV - RFC 2518 - is a
   protocol which allows clients to manipulate files on a remote server
   using HTTP.

SYNOPSIS
   In your favorite NPH CGI script ( for now )

         use HTTP::DAVServer;
         HTTP::DAVServer->handle;

   You will need to add directives to Apache to request that certain
   methods be handled by the CGI script:

         Script PROPFIND /cgi-bin/nph-webdav
         Script PUT      /cgi-bin/nph-webdav

   See INSTALL for more details. See INSTALL for important warning!

MODULE STATUS
   This module is a prototype. Please see INSTALL for important warnings.
   You should try this module if you're interested in developing a
   customized WebDAV server and you want to use Perl to do most or all of
   fancy footwork behind the scenes.

   My short term goal is to provide a reference implementation of a WebDAV
   server which can be subclassed for specific implementation features.
   Information to resolve any of the following bugs is most welcome! I will
   be fixing all the failed items in copymove next.

   Litmus test results:

       http and basic tests are good, some errors on copymove and propfind. proppatch not done so skips lots of tests.

       -> running `http':
       0. init.................. pass
       1. begin................. pass
       2. expect100............. pass
       3. finish................ pass
       <- summary for `http': of 4 tests run: 4 passed, 0 failed. 100.0%

       -> running `basic':
       0. init.................. pass
       1. begin................. pass
       2. options............... WARNING: server does not claim Class 2 compliance
        ...................... pass (with 1 warning)
       3. put_get............... pass
       4. put_get_utf8_segment.. pass
       5. mkcol_over_plain...... pass
       6. delete................ pass
       7. delete_null........... pass
       8. mkcol................. pass
       9. mkcol_again........... pass
       10. delete_coll........... pass
       11. mkcol_no_parent....... pass
       12. mkcol_with_body....... pass
       13. finish................ pass
       <- summary for `basic': of 14 tests run: 14 passed, 0 failed. 100.0%
       -> 1 warning was issued.

       -> running `copymove':
        0. init.................. pass
        1. begin................. pass
        2. copy_init............. pass
        3. copy_simple........... FAIL
        4. copy_overwrite........ WARNING: COPY-on-existing fails with 412
           ...................... FAIL
        5. copy_cleanup.......... pass
        6. copy_coll............. FAIL
        7. move.................. FAIL
        8. move_coll............. FAIL
        9. move_cleanup.......... pass
       10. finish................ pass
       <- summary for `copymove': of 11 tests run: 6 passed, 5 failed. 54.5%
       -> 1 warning was issued.

       -> running `props':
        0. init.................. pass
        1. begin................. pass
        2. propfind_invalid...... pass
        3. propfind_invalid2..... pass
        4. propfind_d0........... FAIL (No responses returned)
        5. propinit.............. pass
        6. propset............... FAIL (PROPPATCH on `/litmus/litmus/prop': 400 Bad Request)
        7. propget............... SKIPPED
        8. propmove.............. SKIPPED
        9. propget............... SKIPPED
       10. propdeletes........... SKIPPED
       11. propget............... SKIPPED
       12. propreplace........... SKIPPED
       13. propget............... SKIPPED
       14. propnullns............ SKIPPED
       15. propget............... SKIPPED
       16. prophighunicode....... SKIPPED
       17. propget............... SKIPPED
       18. propvalnspace......... SKIPPED
       19. propwformed........... pass
       20. propinit.............. pass
       21. propmanyns............ FAIL (PROPPATCH on `/litmus/litmus/prop': 400 Bad Request)
       22. propget............... FAIL (PROPFIND on `/litmus/litmus/prop': 400 Bad Request)
       23. propcleanup........... pass
       24. finish................ pass
       -> 12 tests were skipped.
       <- summary for `props': of 13 tests run: 9 passed, 4 failed. 69.2%

DEPENDENCIES
   This code requires:

     XML::Simple
     XML::SAX     (for namespace support in XML::Simple)
     DateTime     (THE new Date and Time support in Perl)

SUPPORT
   For technical support please email to [email protected] ... for faster
   service please include "HTTP::DAVServer" and "help" in your subject
   line.

AUTHOR
    Jay J. Lawrence - [email protected]
    Infonium Inc., Canada
    http://www.infonium.ca/

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.

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!

SEE ALSO
   HTTP::DAV, HTTP::Webdav, http://www.webdav.org/, RFC 2518