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