DarkPeak.Functional.Http 1.12.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package DarkPeak.Functional.Http --version 1.12.0
                    
NuGet\Install-Package DarkPeak.Functional.Http -Version 1.12.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="DarkPeak.Functional.Http" Version="1.12.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DarkPeak.Functional.Http" Version="1.12.0" />
                    
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.12.0
                    
#r "nuget: DarkPeak.Functional.Http, 1.12.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.
#:package DarkPeak.Functional.Http@1.12.0
                    
#: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.12.0
                    
Install as a Cake Addin
#tool nuget:?package=DarkPeak.Functional.Http&version=1.12.0
                    
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, Validation), 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.

All types support Map, Bind, Match, LINQ query syntax, and async variants.

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));

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 114 3/14/2026
1.14.1 112 3/13/2026
1.13.1 108 2/15/2026
1.12.0 108 2/15/2026
1.10.1 114 2/15/2026
1.8.0 109 2/15/2026
1.7.0 108 2/15/2026