What is wxCurlDAV (wxCURL)?
wxCurlDAV was the beginning of a C++ class designed for people using wxWidgets to simply and easily add WebDAV functionality to their application. This class could be extended in the future to support SSH and FTP, though for the time being I was only interested in the WebDAV aspect.
Since it's creation I've transitioned the project to Source Forge, where it currently resides and is called more simply wxCURL. I'm always looking for new functionality, bug fixes, etc. for the project and really appreciate everything folks have done for the project over the years, which seems to get use despite me not doing much with it!
Why the "wx"?
wxCurlDAV was built using wxWidgets a cross platform GUI (and more) toolkit. This means that if you're using wxWidgets to develop your application, and want to add WebDAV capabilities, this should help you out!
Why the "Curl"?
wxCurlDAV, as its name implies, makes use of LibCURL a cross platform URL library. I'm only using a subset of CURL's functionality. LibCURL is really cool, and the best way to find out about all of the functionality it has would be to go and investigate either the source code for this class, or just some sample LibCURL programs.
What about features?
wxCurlDAV has support for the following WebDAV methods (more being added in the future). If you are interested in what the full WebDAV functionality set is, see RFC2518:
- GET - The library retrieves a file from the server directly to a local file.
- GET - The library retrieves a file from the server into a buffer in memory.
- PUT - The library uploads a local file to the server.
- PUT - The library uploads a file to the server from a buffer in memory.
- MKCOL - The library creates a directory on the server.
- DELETE - The library deletes a directory or file from the server.
- PROPFIND - The library retrieves either the entire property set for a given file or directory from the server. This XML can be parsed by the user of the library.
- PROPFIND - The library retrieves a sub-set of DAV: namespace properties from the server. The caller can specify which properties will be requested. The returned XML can be parsed by the user of the library.
- PROPFIND - The library retrieves properties from the server with XML passed in by the caller.
More features please.
wxCurlDAV also supports several "complex" methods that make use of basic WebDAV methods to determine more useful information (more being added in the future).
- GetDAVFs - The library retrieves an array of "FS" or file-system elements from the server via a PROPFIND call. The returned structure contains information about either the single file, or the contents of a directory. The name, creation-date, last-modified-date, content-length, content-type, and status are contained in this data structure.
- Exists - The library returns a boolean value informing you whether the given resource exists or not. This is done with a minimal PROPFIND call on the resource.
- IsDirectory - The library retrieves the content-type information for the element. A boolean value is returned, indicating if the element is a directory or not.
- HasDirectory - Similar to the above call, but simpler for testing if an element exists, and is indeed a directory. This is done with a PROPFIND call.
Why doesn't it have X? / Why doesn't it support X?
Because I only had need of certain LibCURL elements, those are the elements I exposed in the API. If you have any particular requests, let me know and I'll see what I can. For example. SSL support would be great, but not being a big SSL user, I don't know what kind of API would be nice. It's up to someone who cares to help me care.
I plan to create an FTP client similar in functionality to this client in the near future. Because wxWidgets has built-in support for FTP, it was lower on my list of priorities.
Test Application and Source Code?
wxCurlDAV (and wxCURL) is released under the wxWindows/wxWidgets licence. The supporting demo application is released under this licence as well.
