Skip to main content

aster_forge_webdav/
lib.rs

1//! Product-neutral WebDAV protocol engine contracts for Aster services.
2//!
3//! This crate owns WebDAV paths, request parsing, protocol preconditions, backend ports,
4//! response models, and observable operation events. Product repositories own authentication,
5//! authorization, workspace scope, persistence, storage policy, quota, and audit semantics.
6#![deny(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
7#![cfg_attr(
8    not(test),
9    deny(
10        clippy::unwrap_used,
11        clippy::unreachable,
12        clippy::expect_used,
13        clippy::panic,
14        clippy::unimplemented,
15        clippy::todo
16    )
17)]
18
19#[cfg(feature = "actix")]
20pub mod actix;
21pub mod backend;
22pub mod deltav;
23pub mod event;
24pub mod lock;
25pub mod path;
26pub mod property;
27pub mod protocol;
28pub mod put;
29pub mod request;
30pub mod resource;
31pub mod response;
32pub mod xml;
33pub mod xml_response;
34
35pub use backend::{
36    DavBackendError, DavBackendErrorKind, DavContentStream, DavDirEntry, DavFile, DavFileSystem,
37    DavIfResourceState, DavIfStateResolver, DavLock, DavLockError, DavLockPreflightError,
38    DavLockSystem, DavMetaData, DavProp, DavResourceKind, FsError, FsFuture, FsResult, FsStream,
39    LsFuture, OpenOptions, ReadDirMeta,
40};
41pub use deltav::{
42    DavVersionTreeReportError, validate_version_tree_report, version_control_response,
43    version_tree_non_file_response, version_tree_report_error_response, version_tree_response,
44};
45pub use event::{DavEvent, DavEventOutcome, DavEventSink, DavOperation, NoopDavEventSink};
46pub use lock::{
47    DavLockPlan, DavLockPlanError, enforce_parent_unlocked, enforce_unlocked,
48    ensure_lock_target_exists, lock_acquire_success_response, lock_conflict_response,
49    lock_discovery_element, lock_limit_response, lock_refresh_success_response,
50    lock_xml_error_response, plan_lock_request, unlock_success_response,
51    unlock_token_mismatch_response, unsubmitted_lock_conflicts,
52};
53pub use path::{
54    DavPath, DavPathError, child_relative_path, decode_relative_path, display_name, encode_href,
55    href_for_dav_path, href_for_relative, parent_relative_path,
56};
57pub use property::{
58    DavProppatchAtomicPlan, build_propfind_item, build_proppatch_item, format_creation_date,
59    plan_atomic_proppatch, property_multistatus_response, propfind_finite_depth_response,
60    propfind_request_label, propfind_xml_error_response, proppatch_xml_error_response,
61};
62pub use protocol::{
63    DavIfEvaluationError, DavPrecondition, DavProtocolError, DavProtocolErrorKind, Depth,
64    Destination, IfHeader, IfResourceGroup, IfStateCondition, IfStateList,
65    destination_relative_path, enforce_if_header, enforce_if_header_with_backends,
66    evaluate_http_download_preconditions, evaluate_http_etag_preconditions, parse_copy_depth,
67    parse_delete_depth, parse_if_header, parse_lock_depth, parse_lock_timeout,
68    parse_lock_token_header, parse_move_depth, parse_overwrite, parse_propfind_depth,
69    submitted_lock_tokens, submitted_lock_tokens_for_path,
70};
71pub use put::{
72    DavPutPlan, DavPutPlanError, DavPutResourceState, DavPutResponseError, plan_put_request,
73    put_plan_error_response, put_success_response,
74};
75pub use request::{DavBodyPolicy, DavMethod, DavRequestHead, DavRequestOrigin};
76pub use resource::{
77    DavCopyMoveMethod, DavCopyMovePlan, DavMutationFailure, DavMutationPlanError,
78    DavMutationResponseError, collection_created_response, delete_success_response,
79    enforce_parent_collection, is_descendant_path, mutation_multistatus_response,
80    mutation_plan_error_response, mutation_success_response, plan_copy_move_request,
81    replace_relative_prefix, resource_identity_path, same_resource_path,
82    validate_collection_create_target, validate_delete_target,
83};
84pub use response::{
85    DAV_ALLOW_HEADER, DavBodyError, DavDownloadBody, DavDownloadPlan, DavDownloadPlanError,
86    DavResponse, DavResponseBody, backend_error_response, body_error_response,
87    method_not_allowed_response, options_response, plan_download_response, protocol_error_response,
88    range_not_satisfiable_response,
89};
90pub use xml::{
91    DavLockRequestBody, DavPropertyPatchRequest, DavPropertyPatchValue, DavPropfindRequest,
92    DavRequestedProperty, DavXmlElement, DavXmlError, DavXmlNode, parse_lock_request,
93    parse_propfind_request, parse_proppatch_request, parse_report_root,
94};
95pub use xml_response::{
96    DavErrorCondition, DavLockXml, DavMultiStatusItem, DavPropStat, DavVersionXml,
97    dav_dead_property_element, dav_element, dav_error_element, dav_lock_discovery_element,
98    dav_lock_response_element, dav_multistatus_element, dav_property_child_element,
99    dav_property_name_element, dav_property_text_element, dav_propstat_element,
100    dav_response_element, dav_status_element, dav_supported_lock_element, dav_text_element,
101    dav_version_multistatus_element,
102};