FractalDataWorks.Web.Http.Abstractions 0.4.0-preview.6

This is a prerelease version of FractalDataWorks.Web.Http.Abstractions.
The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package FractalDataWorks.Web.Http.Abstractions --version 0.4.0-preview.6
                    
NuGet\Install-Package FractalDataWorks.Web.Http.Abstractions -Version 0.4.0-preview.6
                    
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="FractalDataWorks.Web.Http.Abstractions" Version="0.4.0-preview.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FractalDataWorks.Web.Http.Abstractions" Version="0.4.0-preview.6" />
                    
Directory.Packages.props
<PackageReference Include="FractalDataWorks.Web.Http.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FractalDataWorks.Web.Http.Abstractions --version 0.4.0-preview.6
                    
#r "nuget: FractalDataWorks.Web.Http.Abstractions, 0.4.0-preview.6"
                    
#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.
#:package FractalDataWorks.Web.Http.Abstractions@0.4.0-preview.6
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FractalDataWorks.Web.Http.Abstractions&version=0.4.0-preview.6&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=FractalDataWorks.Web.Http.Abstractions&version=0.4.0-preview.6&prerelease
                    
Install as a Cake Tool

FractalDataWorks.Web.Http.Abstractions

Core abstractions and TypeCollection definitions for HTTP-based web services in the FractalDataWorks platform. Provides endpoint types, security methods, and rate limiting policies using the TypeCollection pattern.

Installation

<PackageReference Include="FractalDataWorks.Web.Http.Abstractions" Version="1.0.0" />

Core Components

Endpoint Types

TypeCollection for categorizing HTTP endpoints. Each type defines default HTTP methods, caching behavior, and authentication requirements.

From EndpointTypes.cs:1-15:

[TypeCollection(typeof(EndpointTypeBase), typeof(IEndpointType), typeof(EndpointTypes))]
public partial class EndpointTypes : TypeCollectionBase<EndpointTypeBase, IEndpointType>
{
}

Available endpoint types:

Type Description Default HTTP Methods Requires Auth
CRUD Create, Read, Update, Delete operations GET, POST, PUT, DELETE, PATCH Yes
Query Read-only data retrieval GET No
Command State-changing business operations POST, PUT, PATCH Yes
EventEndpoint Event publishing and subscription POST, GET Yes
File File upload/download operations GET, POST, PUT, DELETE Yes
Health System health and monitoring GET No

From CRUD.cs:11-28:

[TypeOption(typeof(EndpointTypes), "CRUD")]
public sealed class CRUD : EndpointTypeBase
{
    public CRUD() : base(
        id: 1,
        name: "CRUD",
        description: "Create, Read, Update, Delete operations for data management",
        defaultHttpMethods: ["GET", "POST", "PUT", "DELETE", "PATCH"],
        requiresAuthentication: true,
        cachingStrategy: "NoCache",
        isReadOnly: false,
        supportsCaching: false,
        defaultCacheDurationSeconds: null,
        requiresValidation: true)
    {
    }
}

Security Methods

TypeCollection for authentication methods supported by the framework.

From SecurityMethods.cs:1-15:

[TypeCollection(typeof(SecurityMethodBase), typeof(ISecurityMethod), typeof(SecurityMethods))]
public partial class SecurityMethods : TypeCollectionBase<SecurityMethodBase, ISecurityMethod>
{
}

Available security methods:

Method Auth Scheme Supports Token Refresh
None (none) No
JWT Bearer Yes
ApiKey ApiKey No
OAuth2 Bearer Yes
Certificate Certificate No

From JWT.cs:11-17:

[TypeOption(typeof(SecurityMethods), "JWT")]
public sealed class JWT : SecurityMethodBase
{
    public JWT() : base(2, "JWT", requiresAuthentication: true, authenticationScheme: "Bearer", supportsTokenRefresh: true) { }
}

Rate Limiting Policies

TypeCollection for rate limiting strategies.

From RateLimitPolicies.cs:1-15:

[TypeCollection(typeof(RateLimitPolicyBase), typeof(IRateLimitPolicy), typeof(RateLimitPolicies))]
public partial class RateLimitPolicies : TypeCollectionBase<RateLimitPolicyBase, IRateLimitPolicy>
{
}

Available policies:

Policy Max Requests Window (sec) Burst Support
None unlimited N/A No
FixedWindow 100 60 No
SlidingWindow 150 60 Yes
TokenBucket 50 10 Yes
Concurrency 10 N/A No

Usage

Access type options through the TypeCollection ByName lookup method.

From EndpointDefaultSettings.cs:10-27:

using FractalDataWorks.Web.Http.Abstractions.Policies;
using FractalDataWorks.Web.Http.Abstractions.Security;

public record EndpointDefaultSettings(
    string SecurityMethodName,
    string RateLimitPolicyName,
    int TimeoutMs,
    long MaxBodySize,
    bool RequireAuthentication,
    string[] AllowedRoles)
{
    public ISecurityMethod? SecurityMethod => SecurityMethods.ByName(SecurityMethodName);
    public IRateLimitPolicy? RateLimitPolicy => RateLimitPolicies.ByName(RateLimitPolicyName);
};

From SecurityConfiguration.cs:24-30:

public string DefaultSecurityMethod { get; init; } = string.Empty;

public ISecurityMethod? DefaultSecurityMethodEnum => SecurityMethods.ByName(DefaultSecurityMethod);
  • FractalDataWorks.Web.RestEndpoints - Concrete endpoint implementations using these abstractions
  • FractalDataWorks.Collections - TypeCollection base types and attributes
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  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 was computed.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
Loading failed