The CloudFS library is a collection of .NET assemblies as gateways to various publicly accessible Cloud storage services.
Branch | Build status | Code coverage | Code analysis | Quality gate |
---|---|---|---|---|
master | ||||
develop | see above | see above |
This library provides access to file system operations of various publicly accessible Cloud storage services behind a common interface. It thus facilitates the flexible integration of Cloud storage into arbitrary .NET applications.
Consideration of a cloud storage service as a target for CloudFS depends on these conditions:
- free storage space quota of at least 10 GB
- file expiration period no shorter than 90 days for free users
- alternatively, in response to a stated interest by the community, a cloud storage service may be included despite shortcomings in the preceding aspects
- availability of a .NET-accessible API under a non-invasive open source license (Apache, MIT, MS-PL)
Currently the following cloud storage services are supported in CloudFS via the specified API libraries:
Cloud storage service | API library | version | sync/async | origin | status | max. file size1 |
---|---|---|---|---|---|---|
(local files) | System.IO (.NET Framework) | N/A | sync | stable | N/A | |
Google Drive | Google Apis V3 | 1.28.0.953 | async | official | stable | >= 256 MB |
Box | Box.V2 | 3.1.0 | async | official | stable | 128 MB |
hubiC | SwiftClient | 2.0.0-beta-0016 | async | 3rd party | stable | 160 MB |
MediaFire | MediaFire SDK | 1.0.0.3 | async | 3rd party / local build | experimental | 12 MB |
MEGA | MegaApiClient | 1.6.0 | async | 3rd party | stable | >= 256 MB |
pCloud | pCloud.NET | N/A | async | 3rd party / local build | stable | 16 MB |
WebDAV5 | WebDAV Client | 2.0.1 | async | 3rd party | stable | >= 256 MB |
Yandex Disk | Yandex Disk API Client | 1.2.11 | async | 3rd party | stable | >= 256 MB |
Degraded services | ||||||
Microsoft OneDrive2 | OneDrive SDK for CSharp | 2.0.7 | async | official | stable | >= 256 MB |
Included by community request | ||||||
Google Cloud Storage | Google Cloud Libraries for .NET | 2.1.0-alpha02 | async | official | experimental | >= 256 MB |
Superseded services | ||||||
Microsoft OneDrive | OneDrive SDK for CSharp | 1.2.0 | async | official | stable | 48 MB |
Microsoft OneDrive | OneDriveSDK3 | N/A | async | inofficial | obsolete | 48 MB |
Google Drive | Google Apis V2 | 1.28.0.953 | async | official | stable | >= 256 MB |
Obsolete services | ||||||
Copy4 | CopyRestAPI | 1.1.0 | async | 3rd party | retired | N/A |
1 Maximum supported file size for upload through the respective cloud API.
This is a non-authoritative value determined through unit tests. ^
2 Following Microsoft's November 2nd, 2015 announcement of its "OneDrive storage plans change in pursuit of productivity and collaboration" the OneDrive cloud storage service will fail to meet the above stated requirements for support in CloudFS after mid-July 2016.
Despite this unprecedented and highly objectionable degradation of service quality, OneDrive will continue to be supported by CloudFS for historical reasons. ^
3 This version of OneDriveSDK has been deprecated by Microsoft. ^
4 The Copy cloud storage service was discontinued as of May 1st 2016 according to this announcement.
The Copy gateway has therefore been retired from CloudFS. ^
5 WebDAV-based cloud storage is available through various public cloud providers or by self-hosting an OwnCloud private cloud. ^
- Platform
- .NET 4.6.2
- Operating system
- tested on Windows 8.1 x64 and Windows Server 2012 R2 (until version 1.0.0-alpha) /
Windows 10 x64 (from version 1.0.1-alpha) - expected to run on Windows 7/8/8.1/10 and Windows Server 2008(R2)/2012(R2)/2016
- tested on Windows 8.1 x64 and Windows Server 2012 R2 (until version 1.0.0-alpha) /
Several cloud storage services require additional authentication of external applications for access to cloud filesystem contents.
For cloud storage services with this kind of authentication policy in place you need to take the following steps before compiling CloudFS locally:
- register for a developer account with the respective cloud service
- create a cloud application configuration with sufficient rights to access the cloud filesystem
- enter the service-provided authentication details into the prepared fields in the
Secrets
class of the affected PowerShellCloudProvider gateway project
At the time of writing this Readme, the following URLs provided access to application management tasks such as registering a new application or changing an application's configuration:
Cloud storage service | Application registration / configuration URL |
---|---|
Microsoft OneDrive | Microsoft Account - Developer Center |
Google Drive | Google Developers Console |
Box | Box Developers Services |
hubiC | Develop hubiC applications |
MediaFire | MediaFire - Developers |
MEGA | Mega Core SDK - Developers |
pCloud | - no configuration required - |
WebDAV | - no configuration required - |
Yandex Disk | Yandex OAuth Access |
Google Cloud Storage | Google Cloud Platform Console |
Obsolete | |
Date | Version | Comments |
---|---|---|
2017-03-31 | 1.0.11-beta | - Version updates to API libraries for various cloud services. - Moved legacy gateways to separate NuGet package. - Switched to Polly for error retry functionality in gateways. |
2016-10-05 | 1.0.10.1-beta | - Fixed NuGet packages. |
2016-10-01 | 1.0.10-beta | - New gateway for Google Cloud Storage added. - Fixed drive free space calculation for Yandex gateway. - Version update to API libraries for Box, Google Drive, and Yandex.Disk. |
2016-08-31 | 1.0.9.1-alpha | - Fixed NuGet packages. |
2016-08-29 | 1.0.9-alpha | - Implemented settings purge function in gateways. - Version updates to API libraries for Box and OneDrive. |
2016-08-26 | 1.0.8-alpha | - New gateway for generic WebDAV providers added. - Support AES encryption of account credentials and access tokens in locally persisted application settings. - Fixed concurrent access to locally persisted application settings. - Version updates to API libraries for Box, Google Drive, SwiftClient, and SemanticTypes. - Activated static code analysis via Coverity Scan. |
2016-08-07 | 1.0.7-alpha | - Added an explicit authentication method for cloud gateways. All other gateway methods still require successful authentication to the cloud service. Note: This breaks compatibility with the previous versions of ICloudGateway and IAsyncCloudGateway .- Migrated gateway for Google Drive and OneDrive to Google Drive API v3 and OneDriveSDK, respectively (previously used API libraries remain available via *_Legacy gateways). - MediaFire gateway now supports session token v2 (lifetime 2 years instead of 10 minutes) - OneDrive gateway now supports creation of empty files. - Fixed cross-thread marshalling of authentication tokens. - Version updates to API libraries for Box, Google Drive, OneDrive |
2016-05-20 | 1.0.6-alpha | - Fixed broken package references in NuGet specs (present since 1.0.3-alpha) - Version update to API library for Box |
2016-05-18 | 1.0.5-alpha | - Retired gateway for Cloud - Version update to API library for Google Drive - Support for Windows Explorer new file creation sequence in MEGA - Improved online editing capability in non-encrypting File gateway |
2016-04-17 | 1.0.4-alpha | - New gateway for hubiC/Swift added. - Version updates to API libraries for Google Drive, MEGA, and Yandex Disk. - Converted Mega gateway to Async operation mode. - Gateways now explicitely declare their capabilities in the ExportMetadata. - Improvements to login window handling if logins are requested for multiple drives. - Various bug fixes. |
2016-02-01 | 1.0.3-alpha | - New gateways for MediaFire and Yandex Disk added. |
2016-01-24 | 1.0.2-alpha | - Gateway configuration extended to accept custom parameters. This change breaks compatibility with earlier API versions. - File Gateway now configurable with target root directory |
2016-01-19 | 1.0.1-alpha | - NuGet dependencies updated, schema of App.config in tests project refactored |
2016-01-08 | 1.0.0-alpha | - Initial release and NuGet registration |
2015-12-29 | 1.0.0.0 | - Initial commit |
- include additional gateways for more Cloud storage services
- improve stability of large file uploads