webdav_client_plus 2.0.0
webdav_client_plus: ^2.0.0 copied to clipboard
A simple WebDAV client that supports some common methods.
Changelog #
2.0.0 #
Breaking #
- The
xmlconstraint moved from^6.0.0to^7.0.1.xml7 deprecates thenamespacearguments in favour ofnamespaceUri, which does not exist in 6, so both versions cannot be supported at once.XmlElementappears in the return types ofpropFind,propFindRaw,accessControlList, andaclRestrictions, so dependents pinned toxml6 will not resolve against this release. - The SDK constraint moved from
>=3.0.0 <4.0.0to^3.11.0.xml7.0.1 requires Dart 3.11, so the previous floor could not be honoured; it is now declared accurately rather than failing during resolution. - Remaining dependency floors were raised to the versions this release is
tested against:
convert^3.1.2,crypto^3.0.7,dio^5.11.0. - Sources moved from
src/client.dart,src/dio.dart,src/file.dart, andsrc/utils.dartintosrc/client/,src/models/, andsrc/internal/. Importingpackage:webdav_client_plus/webdav_client_plus.dartis unaffected; direct imports of the oldsrc/paths are not. - GET and PUT no longer issue an OPTIONS preflight. Servers that relied on the preflight to create an implicit session see one fewer request.
Added #
- Access control (RFC 3744):
acl,accessControlList,aclRestrictions,currentUserPrivilegeSet,currentUserPrincipal,inheritedAclSet,ownerPrincipal,groupMemberSet,groupMembership,principalCollectionSet,principalMatch,principalPropertySearch,principalSearchPropertySet,principalUrl,alternateUriSet. - Versioning (RFC 3253):
versionControl,checkin,checkout,uncheckout,checkedIn,checkedOut,versionTree,versionHistory,versionHistoryReport,label,merge,baselineControl,mkactivity,mkworkspace,expandProperty,predecessorSet,successorSet,activityCollectionSet,workspaceCollectionSet. - Bindings (RFC 5842):
bind,unbind,rebind. - Collection synchronization (RFC 6578):
syncCollection. - Property access:
propFind,propFindAll,propFindDepth,propFindNames,propFindRaw,propPatch,orderpatch,mkdirWithProps,supportedMethods,supportedLiveProperties,supportedReports,resourceTypes,quotaBytes,source,comment,creatorDisplayName.propFindRawreports per-property status codes rather than collapsing them. - Locking:
lockDiscovery,supportedLocks,refreshLock. - Transport:
requestruns arbitrary verbs through the built-in auth stack, withreport,search,options, andheadbuilt on top. Also addedreadStream,writeStream,create,updateIfMatch, andabsoluteUrl. - Subscriptions:
subscribe,unsubscribe,poll. - Multi-Status parsing:
parseMultiStatus,parseMultiStatusToMap,MultiStatusResponse, andMultiStatusPropstat, carrying per-property status codes together with<d:error>,<d:responsedescription>, and<d:location>.
Changed #
copyacceptsDepth: 0per RFC 4918 §9.8 and rejects unsupported depths.- Lock tokens are read from the
Lock-Tokenresponse header first, with the XML body retained as a fallback (RFC 4918 §§9.10.1, 10.5). - Requests carrying an
Ifheader now also sendCache-Control: no-cacheandPragma: no-cache(RFC 4918 §10.4.5). - DELETE responses with 207 Multi-Status report per-member diagnostics.
Fixed #
DestinationandIfheader URLs are percent-encoded. Paths containing a space or any non-ASCII character previously produced an invalid header value, which servers such as dufs rejected with400 Invalid Destination, breakingcopy,move, andrenameon those paths. Existing%XXescapes are left intact, so pre-encoded input such as%2Fis not double-encoded.- A 3xx response with no
Locationheader now reportsNo location header foundinstead of a generic failure. The rawrequestescape hatch still returns the response unchanged. - Cancelling a
readFileno longer raisesPathNotFoundExceptionwhen the partial download has already been removed. The cleanup runs from an unawaited cancel handler, so the error surfaced as an unhandled async error rather than reaching the caller. resolveAgainstBaseUrlstrips dot-segments per RFC 4918 §8.3.resolveAgainstBaseUrltreats leading-slash references as server-root URLs.WebdavFileretains custom property XML, so empty and structured values survive PROPFIND parsing.WebdavFileparsing accepts every 2xx propstat status, so entries from compliant servers are no longer dropped.
1.0.0 #
- Initial release of the project.