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 jlawrenc@cpan.org ... for faster
    service please include "HTTP::DAVServer" and "help" in your subject
    line.

AUTHOR
     Jay J. Lawrence - jlawrenc@cpan.org
     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