Skip to content

EntropyEngine::Networking::WebDAV

Name
EntropyEngine::Networking::WebDAV::Utils
Name
classEntropyEngine::Networking::WebDAV::WebDAVReadStream
Read-only FileStream for WebDAV GET operations via HttpClient.
classEntropyEngine::Networking::WebDAV::WebDAVFileSystemBackend
Read-only VFS backend for WebDAV servers.
classEntropyEngine::Networking::WebDAV::WebDAVConnection
HTTP/1.1 client for WebDAV operations.
structEntropyEngine::Networking::WebDAV::DavResourceInfo
Resource information from WebDAV PROPFIND response.
Name
voidtoLowerInPlace(std::string & s)
std::vector< DavResourceInfo >parsePropfindXml(const std::vector< uint8_t > & xmlBytes)
Parses WebDAV PROPFIND response body (207 Multistatus).
inton_stream_message_complete_cb(llhttp_t * p)
inton_stream_headers_complete_cb(llhttp_t * p)
inton_stream_header_value_cb(llhttp_t * p, const char * at, size_t len)
inton_stream_header_field_cb(llhttp_t * p, const char * at, size_t len)
inton_stream_body_cb(llhttp_t * p, const char * at, size_t len)
inton_status_cb(llhttp_t * p, const char * at, size_t len)
inton_message_complete_cb(llhttp_t * p)
inton_headers_complete_cb(llhttp_t * p)
inton_header_value_cb(llhttp_t * p, const char * at, size_t len)
inton_header_field_cb(llhttp_t * p, const char * at, size_t len)
inton_body_cb(llhttp_t * p, const char * at, size_t len)
std::string_viewlocalName(const char * qn)
std::optional< std::string >hrefToVfsPath(const std::string & href, const std::string & baseUrl)
boolhasParentTraversal(std::string_view p)
XMLElement *firstByLocal(XMLElement * parent, std::string_view name)
Name
size_tDEFAULT_STREAM_BUFFER_BYTES
size_tDEFAULT_MAX_BODY_BYTES
static inline void toLowerInPlace(
std::string & s
)
std::vector< DavResourceInfo > parsePropfindXml(
const std::vector< uint8_t > & xmlBytes
)

Parses WebDAV PROPFIND response body (207 Multistatus).

Parameters:

  • xmlBytes Raw XML response body from HTTP 207 response

Return: Vector of resource info in document order, or empty on parse error

Parses RFC 4918 compliant WebDAV PROPFIND XML responses. Extracts resource properties from DAV:response elements. Namespace-tolerant (matches by local name, ignores prefixes). Prefers propstat with HTTP 200 status.

auto response = conn->propfind("/dav/folder", 1, propfindXml);
if (response.statusCode == 207) {
auto resources = parsePropfindXml(response.body);
for (const auto& res : resources) {
if (res.isCollection) {
processDirectory(res.href);
} else {
processFile(res.href, res.contentLength);
}
}
}
static int on_stream_message_complete_cb(
llhttp_t * p
)
static int on_stream_headers_complete_cb(
llhttp_t * p
)
static int on_stream_header_value_cb(
llhttp_t * p,
const char * at,
size_t len
)
static int on_stream_header_field_cb(
llhttp_t * p,
const char * at,
size_t len
)
static int on_stream_body_cb(
llhttp_t * p,
const char * at,
size_t len
)
static int on_status_cb(
llhttp_t * p,
const char * at,
size_t len
)
static int on_message_complete_cb(
llhttp_t * p
)
static int on_headers_complete_cb(
llhttp_t * p
)
static int on_header_value_cb(
llhttp_t * p,
const char * at,
size_t len
)
static int on_header_field_cb(
llhttp_t * p,
const char * at,
size_t len
)
static int on_body_cb(
llhttp_t * p,
const char * at,
size_t len
)
static std::string_view localName(
const char * qn
)
static std::optional< std::string > hrefToVfsPath(
const std::string & href,
const std::string & baseUrl
)
static bool hasParentTraversal(
std::string_view p
)
static XMLElement * firstByLocal(
XMLElement * parent,
std::string_view name
)
static size_t DEFAULT_STREAM_BUFFER_BYTES = 4ull * 1024ull * 1024ull;
static size_t DEFAULT_MAX_BODY_BYTES = 128ull * 1024ull * 1024ull;

Updated on 2026-01-26 at 17:14:35 -0500