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#![cfg_attr(
7    not(test),
8    deny(
9        clippy::unwrap_used,
10        clippy::unreachable,
11        clippy::expect_used,
12        clippy::panic,
13        clippy::unimplemented,
14        clippy::todo,
15        clippy::allow_attributes,
16        clippy::allow_attributes_without_reason
17    )
18)]
19
20#[cfg(feature = "actix")]
21pub mod actix;
22pub mod backend;
23pub mod capability;
24pub mod conditional;
25pub mod deltav;
26pub mod event;
27pub mod extension;
28pub mod lock;
29pub mod multistatus;
30pub mod mutation;
31pub mod patch;
32pub mod path;
33pub mod preference;
34pub mod property;
35pub mod protocol;
36pub mod put;
37pub mod request;
38pub mod resource;
39pub mod response;
40pub mod traversal;
41pub mod xml;
42pub mod xml_response;
43
44pub use backend::{
45    DavBackendError, DavBackendErrorKind, DavContentStream, DavDirectoryEntry,
46    DavDirectoryEnumerator, DavDirectoryPage, DavDirectoryPageRequest, DavDownloadOpenError,
47    DavDownloadSource, DavFileSystem, DavIfResourceState, DavIfStateResolver, DavLock,
48    DavLockAcquireRequest, DavLockAcquireResult, DavLockError, DavLockPreflightError,
49    DavLockSystem, DavMetaData, DavMutationCredentials, DavOpenedDownload, DavProp,
50    DavRandomWriteHandle, DavRandomWriteSystem, DavResourceKind, DavWriteHandle, DavWriteOptions,
51    DavWriteSystem, FsError, FsFuture, FsResult, LsFuture,
52};
53pub use capability::{
54    DavAccessControlExtension, DavAccessControlSupport, DavActivityExtension, DavActivitySupport,
55    DavAddMemberExtension, DavAddMemberSupport, DavAutoVersion, DavBaselineExtension,
56    DavBaselineSupport, DavBindingsExtension, DavBindingsSupport, DavCapabilityContext,
57    DavCapabilityDeclaration, DavCapabilityEvaluationError, DavCapabilityPlanError,
58    DavCapabilityProfile, DavCapabilityProvider, DavCapabilitySnapshot, DavCapabilityTarget,
59    DavCheckoutInPlaceExtension, DavCheckoutInPlaceSupport, DavClass1Profile, DavClass1Support,
60    DavClass2And3Profile, DavClass2Profile, DavClass2Support, DavClass3Profile, DavClass3Support,
61    DavCollectionSyncExtension, DavCollectionSyncSupport, DavCompatibilityCapabilities,
62    DavComplianceClasses, DavCurrentPrincipalExtension, DavCurrentPrincipalSupport,
63    DavExtendedMkcolExtension, DavExtendedMkcolSupport, DavExtensionMarker, DavLabelExtension,
64    DavLabelSupport, DavLockingCapability, DavMergeExtension, DavMergeSupport, DavMethodGateError,
65    DavNonDavProfile, DavOrderedCollectionsExtension, DavOrderedCollectionsSupport,
66    DavPartialPutCapability, DavPartialPutSupport, DavPatchBodyPolicy, DavPatchCapability,
67    DavPatchFormat, DavPatchSupport, DavPreferExtension, DavPreferSupport,
68    DavPrivateUpdateRangeCapability, DavPrivateUpdateRangeSupport, DavQuotaExtension,
69    DavQuotaSupport, DavRedirectReferencesExtension, DavRedirectReferencesSupport,
70    DavResourceState, DavSearchCapabilities, DavSearchExtension, DavSearchGrammar,
71    DavSearchSupport, DavUpdateExtension, DavUpdateSupport, DavVersionControlExtension,
72    DavVersionControlSupport, DavVersionControlledCollectionExtension,
73    DavVersionControlledCollectionSupport, DavVersionHistoryExtension, DavVersionHistorySupport,
74    DavVersioningCapabilities, DavVersioningState, DavWithExtension, DavWithPartialPut,
75    DavWithPatch, DavWithPrivateUpdateRange, DavWorkingResourceExtension,
76    DavWorkingResourceSupport, DavWorkspaceExtension, DavWorkspaceSupport, DavWriteCapabilities,
77    DavWritePrecondition, plan_capabilities, plan_capabilities_with_provider,
78};
79pub use conditional::{
80    DavConditionalEvaluationError, DavConditionalOutcome, DavConditionalPlan,
81    DavConditionalPlanError, DavConditionalResource, DavRangeEvaluation, plan_conditionals,
82    plan_conditionals_with_backends, plan_http_conditionals,
83};
84pub use deltav::{
85    DavExpandPropertyError, DavExpandPropertyProvider, DavExpandPropertyRequest,
86    DavExpandPropertySelection, DavExpandPropertyValue, DavReportErrorResponsePolicy,
87    DavReportLimits, DavReportPlanError, DavReportRequest, DavVersionControlAction,
88    DavVersionControlPlan, DavVersionControlPlanError, DavVersionControlPort,
89    DavVersionControlResult, DavVersionProperty, DavVersionPropertyResult, DavVersionReportItem,
90    DavVersionTreeRequest, DavVersioningMethodPlan, DavVersioningPrecondition,
91    execute_expand_property, execute_version_control, expand_property_error_response,
92    plan_report_request, plan_report_request_with_limits, plan_version_control_request,
93    plan_versioning_method, report_plan_error_response, version_control_plan_error_response,
94    version_control_response, version_tree_response, version_tree_response_with_limits,
95    versioning_precondition_response,
96};
97pub use event::{
98    DavEvent, DavEventOutcome, DavEventSink, DavObservationError, DavOperation,
99    DavOperationObservations, DavProtocolFailureClass, DavStreamOutcome, NoopDavEventSink,
100    publish_non_authoritative,
101};
102pub use extension::{
103    DavExtensionBodyKind, DavExtensionDescriptor, DavExtensionMethod, DavExtensionPackage,
104    DavExtensionSet, DavExtensionSetIter, DavLiveProperty, DavPreferenceSet, DavReportType,
105    DavResourceStateSet, extension_body_kind, extension_methods,
106};
107pub use lock::{
108    DavLockEnforcementError, DavLockPlan, DavLockPlanError, enforce_parent_unlocked,
109    enforce_unlocked, lock_acquire_success_response, lock_conflict_response,
110    lock_discovery_element, lock_limit_response, lock_refresh_success_response,
111    lock_xml_error_response, plan_lock_request, unlock_success_response,
112    unlock_token_mismatch_response, unsubmitted_lock_conflicts,
113};
114pub use multistatus::{
115    DavMultiStatusError, DavMultiStatusErrorKind, DavMultiStatusLimits, DavMultiStatusProgress,
116    DavMultiStatusSourceError, DavMultiStatusStream, DavMultiStatusWriter, dav_multistatus_bytes,
117    multistatus_stream_response, multistatus_stream_response_with_cancellation,
118};
119pub use mutation::{
120    DavMutationCommand, DavMutationComposeError, DavMutationExecutorLimits, DavMutationOperation,
121    DavMutationOutcome, DavMutationPort, DavMutationRequest, DavMutationStepError,
122    DavMutationStepKind, DavMutationStop, DavMutationTargetRole, execute_recursive_mutation,
123    mutation_outcome_response,
124};
125pub use patch::{DavPatchPlan, DavPatchPlanError, patch_plan_error_response, plan_patch_request};
126pub use path::{
127    DavPath, DavPathError, child_relative_path, decode_relative_path, display_name, encode_href,
128    href_for_dav_path, href_for_relative, parent_relative_path,
129};
130pub use preference::{DavPreferencePlan, plan_preferences};
131pub use property::{
132    DavCurrentPrincipal, DavLivePropertyError, DavLivePropertyEvaluationError,
133    DavLivePropertyMetadata, DavLivePropertyProvider, DavLivePropertyRequirements,
134    DavLivePropertyValueSnapshot, DavProppatchAtomicPlan, DavQuotaSnapshot,
135    build_live_propfind_item, build_live_propfind_item_with_provider, build_proppatch_item,
136    format_creation_date, is_protected_live_property, live_property_requirements,
137    plan_atomic_proppatch, property_multistatus_response,
138    property_multistatus_response_with_limits, propfind_finite_depth_response,
139    propfind_request_label, propfind_xml_error_response, proppatch_xml_error_response,
140};
141pub use protocol::{
142    DavIfEvaluationError, DavProtocolError, DavProtocolErrorKind, Depth, Destination, IfHeader,
143    IfResourceGroup, IfStateCondition, IfStateList, destination_relative_path, enforce_if_header,
144    enforce_if_header_with_backends, parse_copy_depth, parse_delete_depth, parse_if_header,
145    parse_lock_depth, parse_lock_timeout, parse_lock_token_header, parse_move_depth,
146    parse_overwrite, parse_propfind_depth, submitted_lock_tokens, submitted_lock_tokens_for_path,
147};
148pub use put::{
149    DavPartialPutPlan, DavPutPlan, DavPutPlanError, DavPutResourceState, DavPutResponseError,
150    DavPutWritePlan, plan_put_request, put_plan_error_response, put_success_response,
151};
152pub use request::{
153    DavBodyPolicy, DavMethod, DavMethodSet, DavMethodSetIter, DavRequestHead, DavRequestOrigin,
154    DavRequestTarget,
155};
156pub use resource::{
157    DavCopyMoveMethod, DavCopyMovePlan, DavMutationFailure, DavMutationPlanError,
158    DavMutationResponseError, DavParentCollectionError, collection_created_response,
159    delete_success_response, enforce_parent_collection, is_descendant_path,
160    mutation_multistatus_response, mutation_multistatus_response_with_limits,
161    mutation_plan_error_response, mutation_success_response, plan_copy_move_request,
162    replace_relative_prefix, resource_identity_path, same_resource_path,
163    validate_collection_create_target, validate_delete_target,
164};
165pub use response::{
166    DavBodyError, DavDownloadBody, DavDownloadPlan, DavDownloadPlanError, DavMultiRangeLimits,
167    DavMultiRangePolicy, DavMultipartDownloadPlan, DavMultipartSegmentPlan, DavRangeLimitBehavior,
168    DavResponse, DavResponseBody, backend_error_response, body_error_response,
169    capability_evaluation_error_response, conditional_plan_error_response, gate_method,
170    method_not_allowed_response, open_download, options_response, plan_download_response,
171    plan_download_response_with_multi_range, protocol_error_response,
172    range_not_satisfiable_response,
173};
174pub use traversal::{
175    DavCancellation, DavCancellationToken, DavDirectoryPageLimits, DavDirectoryPageState,
176    DavDirectoryPageValidationError, DavDirectoryReadError, DavNeverCancelled, DavTraversalBudget,
177    DavTraversalError, DavTraversalErrorKind, DavTraversalLimits, DavTraversalProgress,
178    DavValidatedDirectoryPage, read_next_directory_page, validate_directory_page,
179};
180pub use xml::{
181    DavLockRequestBody, DavPropertyPatchRequest, DavPropertyPatchValue, DavPropfindRequest,
182    DavRequestedProperty, DavXmlElement, DavXmlError, DavXmlNode, parse_lock_request,
183    parse_propfind_request, parse_proppatch_request,
184};
185pub use xml_response::{
186    DavErrorCondition, DavLockXml, DavMultiStatusItem, DavPropStat, dav_dead_property_element,
187    dav_element, dav_error_element, dav_lock_discovery_element, dav_lock_response_element,
188    dav_property_child_element, dav_property_name_element, dav_property_text_element,
189    dav_supported_lock_element, dav_text_element,
190};