DarkPeak.Functional.Http 1.16.4

dotnet add package DarkPeak.Functional.Http --version 1.16.4
                    
NuGet\Install-Package DarkPeak.Functional.Http -Version 1.16.4
                    
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="DarkPeak.Functional.Http" Version="1.16.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DarkPeak.Functional.Http" Version="1.16.4" />
                    
Directory.Packages.props
<PackageReference Include="DarkPeak.Functional.Http" />
                    
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 DarkPeak.Functional.Http --version 1.16.4
                    
#r "nuget: DarkPeak.Functional.Http, 1.16.4"
                    
#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 DarkPeak.Functional.Http@1.16.4
                    
#: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=DarkPeak.Functional.Http&version=1.16.4
                    
Install as a Cake Addin
#tool nuget:?package=DarkPeak.Functional.Http&version=1.16.4
                    
Install as a Cake Tool

DarkPeak.Functional

CI

A functional programming library for .NET providing monadic types and railway-oriented programming patterns.

Packages

Package Version Description
DarkPeak.Functional NuGet Core library providing monadic types (Option, Result, Either, OneOf, Validation), IAsyncEnumerable functional extensions, retry policies with backoff strategies, circuit breaker, memoization with TTL/LRU support, and MemoizeResult for caching only successful Result values.
DarkPeak.Functional.Http NuGet Wraps HttpClient operations in Result<T, Error> for type-safe, exception-free HTTP communication. Supports JSON, string, stream, and byte array responses with per-request header customization.
DarkPeak.Functional.AspNet NuGet ASP.NET integration that converts Result<T, Error> to IResult and ProblemDetails for idiomatic minimal API error handling.
DarkPeak.Functional.Redis NuGet Redis distributed cache provider implementing ICacheProvider<TKey, TValue> for use with Memoize and MemoizeResult.
DarkPeak.Functional.Dapper NuGet Wraps Dapper queries and commands in Result<T, Error> with typed DatabaseError mapping and transaction support.
DarkPeak.Functional.EntityFramework NuGet Wraps EF Core operations in Result<T, Error> with typed errors for concurrency, save failures, and general database exceptions.
DarkPeak.Functional.HealthChecks NuGet ASP.NET Core health check implementations for CircuitBreakerPolicy and ICacheProvider, with fluent IHealthChecksBuilder registration.
DarkPeak.Functional.Mediator NuGet Mediator CQRS integration providing IResultCommand, IResultQuery, validation pipeline behavior, and exception handling that wraps responses in Result<T, Error>.

Core types support exhaustive Match, LINQ query syntax where appropriate, and async APIs across the library.

Example

using DarkPeak.Functional;
using DarkPeak.Functional.Extensions;

// Cache successful fetches for 5 minutes — failures are never cached
var fetchUser = MemoizeResult.FuncAsync<int, User, Error>(
    id => httpClient.GetResultAsync<User>($"/users/{id}"),
    opts => opts.WithExpiration(TimeSpan.FromMinutes(5)));

var fetchOrder = MemoizeResult.FuncAsync<int, Order, Error>(
    id => httpClient.GetResultAsync<Order>($"/orders/{id}"),
    opts => opts.WithExpiration(TimeSpan.FromMinutes(5)));

// Run both fetches concurrently, then chain the result
var summary = await fetchUser(42)
    .Join(fetchOrder(7))                                     // concurrent via Task.WhenAll
    .Map((user, order) => new Summary(user.Name, order.Total))
    .Tap(s => logger.LogInformation("Built summary for {Name}", s.Name))
    .TapError(err => logger.LogError("Failed: {Msg}", err.Message));

Core Types

  • Option<T> — explicit presence or absence instead of null
  • Result<T, TError> — success/failure flows with typed errors
  • Either<TLeft, TRight> — two equally valid branches
  • OneOf<T1, ..., Tn> — discriminated unions with 2-8 cases
  • Validation<T, TError> — error accumulation instead of short-circuiting

See docs/articles/oneof.md for OneOf usage and Either interop helpers.

Building

dotnet build
dotnet test
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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. 
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
1.16.4 88 3/14/2026
1.14.1 91 3/13/2026
1.13.1 93 2/15/2026
1.12.0 92 2/15/2026
1.10.1 100 2/15/2026
1.8.0 93 2/15/2026
1.7.0 95 2/15/2026