VOOZH about

URL: https://www.nuget.org/packages/Mostlylucid.Common/

⇱ NuGet Gallery | Mostlylucid.Common 7.5.5




👁 Image
Mostlylucid.Common 7.5.5

dotnet add package Mostlylucid.Common --version 7.5.5
 
 
NuGet\Install-Package Mostlylucid.Common -Version 7.5.5
 
 
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="Mostlylucid.Common" Version="7.5.5" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Mostlylucid.Common" Version="7.5.5" />
 
Directory.Packages.props
<PackageReference Include="Mostlylucid.Common" />
 
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 Mostlylucid.Common --version 7.5.5
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Mostlylucid.Common, 7.5.5"
 
 
#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 Mostlylucid.Common@7.5.5
 
 
#: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=Mostlylucid.Common&version=7.5.5
 
Install as a Cake Addin
#tool nuget:?package=Mostlylucid.Common&version=7.5.5
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Mostlylucid.Common

Shared abstractions, base classes, and utilities for Mostlylucid NuGet packages.

Features

Caching

Generic caching service abstraction with memory cache implementation:

// Register caching service
services.AddMemoryCachingService<MyData>(options =>
{
 options.DefaultExpiration = TimeSpan.FromMinutes(30);
 options.MaxEntries = 5000;
});

// Use in your service
public class MyService
{
 private readonly ICachingService<MyData> _cache;

 public async Task<MyData?> GetDataAsync(string key)
 {
 return await _cache.GetOrAddAsync(key, async () =>
 {
 // Fetch from source if not cached
 return await FetchFromSourceAsync(key);
 });
 }
}

Statistics Tracking

Base interfaces and implementations for service statistics:

public class MyService : IServiceStatistics
{
 private readonly ServiceStatisticsTracker _stats = new();

 public async Task<Result> ProcessAsync(Request request)
 {
 _stats.IncrementRequests();

 var cached = GetFromCache(request);
 if (cached != null)
 {
 _stats.IncrementCacheHit();
 return cached;
 }

 // Process...
 }

 public long TotalRequests => _stats.TotalRequests;
 public long CacheHits => _stats.CacheHits;
 public double CacheHitRate => _stats.CacheHitRate;
}

Periodic Update Service

Base class for background services that periodically update data:

public class MyUpdateService : PeriodicUpdateService
{
 protected override TimeSpan UpdateInterval => TimeSpan.FromHours(24);

 protected override Task<DateTime?> GetLastUpdateTimeAsync(CancellationToken ct)
 {
 return Task.FromResult(File.GetLastWriteTimeUtc("data.db") as DateTime?);
 }

 protected override async Task PerformUpdateAsync(CancellationToken ct)
 {
 await DownloadLatestDataAsync(ct);
 }
}

Configuration Interfaces

Standard options interfaces for consistent configuration:

public class MyOptions : ICacheableOptions, ITestableOptions
{
 public bool Enabled { get; set; } = true;
 public TimeSpan CacheDuration { get; set; } = TimeSpan.FromHours(1);
 public int MaxCacheEntries { get; set; } = 10000;
 public bool EnableTestMode { get; set; } = false;
 public string TestModeHeader => "X-Test-Mode";
}

Middleware Base

Base class for middleware with test mode support:

public class MyMiddleware : TestModeMiddlewareBase<MyResult>
{
 protected override string ResultKey => "MyResult";
 protected override string TestModeHeader => "X-Test-Mode";
 protected override bool IsTestModeEnabled => _options.EnableTestMode;

 protected override MyResult? CreateTestModeResult(string testValue)
 {
 return new MyResult { TestValue = testValue };
 }

 protected override async Task<MyResult?> ProcessRequestAsync(HttpContext context)
 {
 var ip = context.GetClientIpAddress();
 return await _service.ProcessAsync(ip);
 }
}

IP Address Extraction

Helper for getting client IP addresses with proxy/CDN support:

// Automatically checks CF-Connecting-IP, X-Forwarded-For, X-Real-IP, etc.
var clientIp = context.GetClientIpAddress();

Entity Interfaces

Standard interfaces for database entities:

public class CachedItem : ICachedEntity
{
 public string Key { get; set; }
 public DateTime CreatedAt { get; set; }
 public DateTime UpdatedAt { get; set; }
 public DateTime ExpiresAt { get; set; }
 public bool IsExpired => DateTime.UtcNow > ExpiresAt;
}

OpenTelemetry Support

Base classes and helpers for OpenTelemetry instrumentation across all Mostlylucid packages:

using Mostlylucid.Common.Telemetry;

// Get all Mostlylucid activity source names for OpenTelemetry configuration
var sources = TelemetryExtensions.GetMostlylucidActivitySourceNames();
foreach (var source in sources)
{
 tracing.AddSource(source);
}

// Activity source names are available as constants
// ActivitySources.BotDetection = "Mostlylucid.BotDetection"
// ActivitySources.GeoDetection = "Mostlylucid.GeoDetection"
// etc.

Available telemetry utilities:

  • TelemetryActivitySource - Wrapper for System.Diagnostics.ActivitySource
  • TelemetryOptions - Configuration for telemetry behavior
  • TelemetryConstants - Standard attribute names following OpenTelemetry semantic conventions
  • TelemetryExtensions - Helper methods for service registration
  • ActivityExtensions - Extension methods for recording results and exceptions

Installation

dotnet add package Mostlylucid.Common

License

GNU AGPLv3

Product Versions Compatible and additional computed target framework versions.
.NET net8.0 net8.0 is compatible.  net8.0-android net8.0-android was computed.  net8.0-browser net8.0-browser was computed.  net8.0-ios net8.0-ios was computed.  net8.0-maccatalyst net8.0-maccatalyst was computed.  net8.0-macos net8.0-macos was computed.  net8.0-tvos net8.0-tvos was computed.  net8.0-windows net8.0-windows was computed.  net9.0 net9.0 is compatible.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 is compatible.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows 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 (2)

Showing the top 2 NuGet packages that depend on Mostlylucid.Common:

Package Downloads
mostlylucid.botdetection

DEPRECATION NOTICE: This package will be renamed to 'stylobot' on June 1 2025. Version 7.0 will publish under the new name with a Stylobot.* namespace. See https://github.com/scottgal/stylobot/blob/main/docs/migration-v7.md Bot detection middleware for ASP.NET Core applications with behavioral analysis, header inspection, IP-based detection, and optional LLM-based classification.

mostlylucid.geodetection

DEPRECATION NOTICE: This package will be renamed to 'stylobot.geodetection' on June 1 2025. See https://github.com/scottgal/stylobot/blob/main/docs/migration-v7.md Geographic location detection and routing middleware for ASP.NET Core applications with country-based routing and IP geolocation.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
7.5.5 49 6/16/2026
7.5.3 47 6/16/2026
7.5.2 58 6/16/2026
7.5.1 52 6/16/2026
7.5.0 51 6/16/2026
7.0.1-alpha0 88 6/4/2026
7.0.0 111 6/1/2026
7.0.0-rc0 91 5/31/2026
7.0.0-alpha2 88 5/31/2026
7.0.0-alpha1 94 5/31/2026
7.0.0-alpha0 96 5/31/2026
6.9.0-alpha0 93 5/28/2026
6.8.9 102 5/26/2026
6.8.8 100 5/26/2026
6.8.6 99 5/26/2026
6.8.5 103 5/25/2026
6.8.4 96 5/25/2026
6.8.3 88 5/25/2026
6.8.2 91 5/25/2026
6.7.7 91 5/24/2026
Loading failed