module Webdav_netfs:sig..end
Netfs APINetfs.stream_fs.
Netfs is part of the Ocamlnet library netstring, and provides
a halfway-standard API to access various types of filesystems.stream_fs typeNetfs.stream_fs API, but also the
extensions of the Http_fs.http_stream_fs plus an additional
method webdav_client that just returns the internal client
object.
Links:
class type webdav_stream_fs =object..end
class webdav_netfs :?tmp_directory:string -> ?tmp_prefix:string -> ?ip:Unix.inet_addr -> string ->webdav_stream_fs
val webdav_netfs : ?tmp_directory:string ->
?tmp_prefix:string ->
?ip:Unix.inet_addr -> string -> webdav_stream_fswebdav_netfs baseurl:
The path / in the access methods corresponds to the passed base_url
argument (like in Webdav_client.webdav_client_t).
Paths are encoded in UTF-8.
There are no symlinks in WebDAV, so the symlink part of stream_fs
remains unimplemented (methods symlink and readlink, and the
symlink-specific file tests).
The path components . and .. are resolved on the client side
before a URL is sent to the server (i.e. "nominal" .. resolution).
Remarks to the access methods:
read: Works exactly as in Http_fs.http_fs. The `Streaming
and `Skip flags are supported.write: Works exactly as in Http_fs.http_fs. The `Streaming,
`Truncate, `Create and `Exclusive flags are supported.
It is not possible, though, to overwrite existing files without
truncation.size: supportedtest and test_flags: Non-directories are reported as regular
files (there is no other way to check for this). There is no
good support for `R, `W, and `X - for simplicity, `R and
`W are always true, `X is an alias for `D.mkdir: supportedremove: supported. WebDAV only knows about recursive deletes.
When the `Recursive flag is not passed, it is first checked
whether the resource is a directory, and if so, the deletion is
rejected. This is a quite cheap emulation, though.rmdir: is not supported. Use a recursive remove instead.readdir: is supportedrename: is supported. Note that the destination path is
always removed if it exists, even if it points to a non-empty
directorycopy: is supported (of course, only for non-recursive copies)tmp_directory: Where temporary files are createdtmp_prefix: Prefix for temporary filesip: If passed, the server will be contacted at this IP, overriding
any hostname lookups.Webdav_client_ha as in:
let real_url, ip = Webdav_client_ha.select_endpoint [urls] timeout in
let netfs = Webdav_netfs.webdav_netfs ~ip real_url in ...
class webdav_netfs_layer :?ip:Unix.inet_addr -> Http_fs.http_fs ->webdav_stream_fs
val webdav_netfs_layer : ?ip:Unix.inet_addr -> Http_fs.http_fs -> webdav_stream_fswebdav_netfs_layer http_fs: Same as above, but the WebDAV protocol
is added on top of an already existing http_fs.
It is required that http_fs uses UTF-8 as path encoding.
val norm_path : string -> stringval translate_status : Webdav_http.webdav_status -> string -> exn