WebApiSkeleton.FileSystem.Contracts 1.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package WebApiSkeleton.FileSystem.Contracts --version 1.1.1                
NuGet\Install-Package WebApiSkeleton.FileSystem.Contracts -Version 1.1.1                
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="WebApiSkeleton.FileSystem.Contracts" Version="1.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add WebApiSkeleton.FileSystem.Contracts --version 1.1.1                
#r "nuget: WebApiSkeleton.FileSystem.Contracts, 1.1.1"                
#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 WebApiSkeleton.FileSystem.Contracts as a Cake Addin
#addin nuget:?package=WebApiSkeleton.FileSystem.Contracts&version=1.1.1

// Install WebApiSkeleton.FileSystem.Contracts as a Cake Tool
#tool nuget:?package=WebApiSkeleton.FileSystem.Contracts&version=1.1.1                

WebApiSkeleton.FileSystem

WebApiSkeleton.FileSystem contains NuGet packages that provide abstractions over a file storage. Default implementation is done around Minio S3 storage.

Description

Usage

Register the dependencies

Required Minio implementation dependencies are added to DI Container by using AddMinioAssemblyDependencies method. All configuration is done by modifying MinioFileSystemConfiguration object.

Following settings are required and will throw if not specified or configured with errors:

  • Endpoint - endpoint where Minio is located;
  • AccessKey - minio access key;
  • SecretKey - minio secret key.

Settings with default values that can be overriden if needed:

  • MaximumInMemoryDownloadFileSizeByte - maximum file size that is downloaded by using MemoryStream (which means file is downloaded into server RAM). By default, only files that are sized less than 1 MB are downloaded this way;
  • DefaultBucketName - the name of default Minio bucket, where files are stored if no directory specified. Default is master;
  • DefaultDirectorySeparator - directory separator for file system abstraction. Default is /.

MediatR configuration

Minio implementation uses WebApiSkeleton features for MediatR requests, including pipeline behavior validation. Thus, requests from WebApiSkeleton.FileSystem.Contracts implement IValidatableRequest and IAuthorizedRequest.

Minio implementation module contains validators for all of the commands using FluentValidation that are automatically added to DI container. Although, ValidationBehavior from WebApiSkeleton.Contracts.Validation is not automatically added and must be added manually using methods found in documentation. Same is applied to PermissionBehavior from WebApiSkeleton.Security.

NOTE: It is highly recommended to add ValidationBehavior after PermissionBehavior because of performance and security reasons.

Example

Example usage can be found in examples directory.

Versioning

All projects are versioned using following format: major.minor.patch. Versioning rules for all projects:

  • patch needs to be incremented when any minor change is made to the project, such as bugfixes or small project-specific features added
  • minor needs to be incremented when new template-wide feature is implemented. In this case all of the projects must have the same version set
  • major needs to be incremented when the WebApiSkeleton template has experienced significant changes, that need to upgrade all of the template packages. In this case all of the projects must have the same version set
Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on WebApiSkeleton.FileSystem.Contracts:

Package Downloads
WebApiSkeleton.FileSystem.MinIO

Package containing implementation of file system based on Minio S3 storage.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.2 134 4/30/2024
1.1.1 134 4/21/2024
1.1.0 133 4/21/2024