Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/saguiitay/webdavclient
Strongly-typed, async WebDAV Client implementation in C#
https://github.com/saguiitay/webdavclient
async-webdav-client nuget webdavclient
Last synced: about 20 hours ago
JSON representation
Strongly-typed, async WebDAV Client implementation in C#
- Host: GitHub
- URL: https://github.com/saguiitay/webdavclient
- Owner: saguiitay
- License: other
- Created: 2014-10-06T16:33:18.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-04-20T15:58:29.000Z (9 months ago)
- Last Synced: 2024-12-28T08:07:45.719Z (8 days ago)
- Topics: async-webdav-client, nuget, webdavclient
- Language: C#
- Homepage:
- Size: 3.34 MB
- Stars: 120
- Watchers: 20
- Forks: 55
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WebDAVClient
## Overview
WebDAV Client for .Net Core, strongly typed, async and open-sourced, imnplemented in C#.
WebDAVClient is based originally on . I've added Async support (instead of Callback), as well strong-types responses.
## NuGet
WebDAVClient is available as a [NuGet package](https://www.nuget.org/packages/WebDAVClient/)
## Features
* Available as a NuGet packages
* Fully support Async/Await
* Strong-typed
* Implemented using HttpClient, which means support for extendibility such as throttling and monitoring
* Supports Unauthenticated or Windows Authentication-based access
* Supports custom Certificate validation
* Supports the full WebDAV API:
* Retrieving files & folders
* Listing items in a folder
* Creating & deleting folders
* Downloading & uploading files
* Downloading & uploading partial content
* Moving & copying files and folders## Release Notes
+ **2.2.1** Minor packaging improvements
+ **2.2.0** Improvement:
- Implement `IDisposable` to avoid `HttpClient` leak
- Added support for `CancellationToken`
- Various performance improvements to reduce memory allocations
- Minor code cleanup
+ **2.1.0** Bug fixes: Fixed handling of port
+ **2.0.0** BREAKING CHANGES!!!
- Added support for .Net Core 3.0 & .Net Standard 2.0
+ **1.1.3** Improvement:
- Ignore WhiteSpaces while parsing response XML
- Enable Windows Authentication
- Support curstom certificate validation
- Add download partial content
- Improved testability by using a wrapper for HttpClient
+ **1.1.2** Improvements:
- Make WebDAVClient work on Mono and make NuGet compatible with Xamarin projects
- Provide a IWebProxy parameter for HttpClient
- Change type of ContentLength from int to long
- Improved compatibility to SVN
+ **1.1.1** Improvements:
- Improved parsing of server responses
- Improved the way we calculate URLs
+ **1.1.0** Improvement: Improved parsing of server values
+ **1.0.23** Improvement: Improve the way we handle path with "invalid" characters
+ **1.0.22** Bug fixes and improvements:
- Improved the way we identify the root folder
- Fixed calculation of URLs
+ **1.0.20** Improvements:
- Added support for default/custom UserAgent
- Improved ToString method of WebDAVException
+ **1.0.19** Improvement: Added support for uploads timeout
+ **1.0.18** Improvement: Added MoveFolder and MoveFile methods
+ **1.0.17** Improvement: Added DeleteFolder and DeleteFile methods
+ **1.0.16** Improvements:
- Improved filtering of listed folder
- Disable ExpectContinue header from requests
+ **1.0.15** Bug fixes: Trim trailing slashes from HRef of non-collection (files) items
+ **1.0.14** BREAKING CHANGES: Replaced Get() method with separated GetFolder() and GetFile() methods.
+ **1.0.13** Improvement: Replaced deserialization mechanism with a more fault-tolerant one.
+ **1.0.12** Bug fixes: Removed disposing of HttpMessageResponse when returning content as Stream
+ **1.0.11** Improvements:
- Introduced new IClient interface
- Added new WebDAVConflictException
- Dispose HttpRequestMessage and HttpResponseMessage after use
+ **1.0.10** Bug fixes: Correctly handle NoContent server responses as valid responses
+ **1.0.9** Bug fixes: Improved handling of BasePath
+ **1.0.8** Bug fixes: Handle cases when CreationDate is null
+ **1.0.7** Async improvements: Added ConfigureAwait(false) to all async calls
+ **1.0.5** Bug fixes and improvements:
- Decode Href property of files/folders
- Complete Http send operation as soon as headers are read
+ **1.0.3** Various bug fixes.
+ **1.0.1** Improved error handling and authentication
+ **1.0.0** Initial release.# Usage
``` csharp
// Basic authentication required
IClient c = new Client(new NetworkCredential { UserName = "USERNAME" , Password = "PASSWORD"});
// OR without authentication
var client = new WebDAVClient.Client(new NetworkCredential());// Set basic information for WebDAV provider
c.Server = "https://dav.dumptruck.goldenfrog.com/";
c.BasePath = "/dav/";// List items in the root folder
var files = await c.List();// Find folder named 'Test'
var folder = files.FirstOrDefault(f => f.Href.EndsWith("/Test/"));
// Reload folder 'Test'
var folderReloaded = await c.GetFolder(folder.Href);// Retrieve list of items in 'Test' folder
var folderFiles = await c.List(folderReloaded.Href);
// Find first file in 'Test' folder
var folderFile = folderFiles.FirstOrDefault(f => f.IsCollection == false);var tempFileName = Path.GetTempFileName();
// Download item into a temporary file
using (var tempFile = File.OpenWrite(tempFileName))
using (var stream = await c.Download(folderFile.Href))
await stream.CopyToAsync(tempFile);// Update file back to webdav
var tempName = Path.GetRandomFileName();
using (var fileStream = File.OpenRead(tempFileName))
{
var fileUploaded = await c.Upload(folder.Href, fileStream, tempName);
}// Create a folder
var tempFolderName = Path.GetRandomFileName();
var isfolderCreated = await c.CreateDir("/", tempFolderName);// Delete created folder
var folderCreated = await c.GetFolder("/" + tempFolderName);
await c.DeleteFolder(folderCreated.Href);
```## Contact
You can contact me on twitter [@saguiitay](https://twitter.com/saguiitay).