Centeva.ObjectStorage 3.0.0

Prefix Reserved
dotnet add package Centeva.ObjectStorage --version 3.0.0                
NuGet\Install-Package Centeva.ObjectStorage -Version 3.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Centeva.ObjectStorage" Version="3.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Centeva.ObjectStorage --version 3.0.0                
#r "nuget: Centeva.ObjectStorage, 3.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Centeva.ObjectStorage as a Cake Addin
#addin nuget:?package=Centeva.ObjectStorage&version=3.0.0

// Install Centeva.ObjectStorage as a Cake Tool
#tool nuget:?package=Centeva.ObjectStorage&version=3.0.0                

Centeva Object Storage Library

Centeva.ObjectStorage is a .NET 6+ / .NET Standard library that provides a generic interface to local or cloud-hosted object ("blob") storage providers.

Supported providers are:

  • Amazon AWS S3 (and anything compatible with its API such as MinIO
  • Google Cloud Storage
  • Azure Blob Storage
  • Local disk

Built With

Getting Started

Import the Centeva.ObjectStorage package to your projects where needed, along with the desired provider sub-packages:

  • Centeva.ObjectStorage.GCP
  • Centeva.ObjectStorage.AWS
  • Centeva.ObjectStorage.Azure.Blob

Create an instance of StorageFactory and register the providers you require, then build an instance of IObjectStorage using a connection string:

var factory = new StorageFactory()
    .UseAwsS3Storage()
    .UseAzureBlobStorage()
    .UseGoogleCloudStorage();

var storage = factory.GetConnection("provider://key1=value1;key2=value2");

In modern .NET applications, you will likely do this as part of service registration in Program.cs, obtaining the connection string from configuration.

In some cases you may prefer to instantiate storage providers directly rather than using connection strings. Each provider's constructor allows the needed parameters to be provided.

Examples

// Local Disk
var storageFromConnectionString = factory.GetConnection("disk://path=C:\\temp\\files");
var storageFromConstructor = new DiskObjectStorage("C:\\temp\\files");

// AWS S3
var storageFromConnectionString = factory.GetConnection("aws.s3://bucket=myfiles;accessKey=mykey;secretKey=secret");
var storageFromConstructor = new AwsS3ObjectStorage("myfiles", "regionName", "endpointUrl", "accessKey", "secret");

// Azure Blob Storage
var storageFromConnectionString = factory.GetConnection("azure.blob://container=myfiles;accountName=myaccount;accountKey=myAccountKey");
var storageFromConstructor = new AzureBlobObjectStorage("accountName", "accountKey", "containerName");

// Google Cloud Storage
var storageFromConnectionString = factory.GetConnection("google.storage://bucket=myfiles;credentialsFilePath=/path/to/creds.json");
var storageFromConnectionString2 = factory.GetConnection("google.storage://bucket=myfiles;credentials=base64EncodedCredentialsJson");
var storageFromConstructor = GoogleObjectStorage.CreateFromCredentialsFile("bucketName", "/path/to/creds.json");
var storageFromConstructor2 = GoogleObjectStorage.CreateFromCredentialsJson("bucketName", "credentialsJsonString");

// MinIO (using AWS S3 provider)
var storageFromConnectionString = factory.GetConnection("aws.s3://endpoint=http://localhost:9000;region=us-east-1;bucket=myfiles;accessKey=myAccount;secretKey=myPassword");
var storageFromConstructor = new AwsS3ObjectStorage("myfiles", "us-east-1", "http://localhost:9000", "myAccount", "myPassword");

TODO: Write API documentation

Contributing

Please use a Pull Request to suggest changes to this library. As this is a shared library, strict semantic versioning rules should be followed to avoid unexpected breaking changes.

Running Tests

From Windows, use the dotnet test command, or your Visual Studio Test Explorer.

Deployment

This library is versioned by GitVersion. Create a Git tag for an official release (e.g., "v1.0.0"). Version numbers can be incremented via commit message using the GitVersion approaches.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.
  • net6.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on Centeva.ObjectStorage:

Package Downloads
Centeva.ObjectStorage.GCP

Google Cloud Storage provider for Centeva.ObjectStorage

Centeva.ObjectStorage.AWS

AWS S3 compatible storage provider for Centeva.ObjectStorage

Centeva.ObjectStorage.Azure.Blob

Azure Storage provider for Centeva.ObjectStorage

Centeva.ObjectStorage.S3

AWS S3 compatible storage provider for Centeva.ObjectStorage

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.0.0 156 9/26/2024
3.0.0-tags-v3-0-0-pre-4.1 36 9/26/2024
3.0.0-tags-v3-0-0-pre-3.1 40 9/26/2024
3.0.0-tags-v3-0-0-pre-2.1 41 9/26/2024
3.0.0-tags-v3-0-0-pre-1.1 44 9/26/2024
2.0.1 323 1/4/2024
2.0.0 220 12/28/2023
2.0.0-pre.3 87 12/20/2023
2.0.0-pre.2 65 12/19/2023
2.0.0-pre.1 81 12/18/2023
1.1.0 270 10/30/2023
1.0.0 190 10/30/2023