LegioSoft.Radar.SDK 2.0.0

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

LegioSoft.Radar.SDK

.NET SDK for the LegioSoft Radar service IP lookup API.

Package

  • Package ID: LegioSoft.Radar.SDK
  • Version: 2.0.0
  • Target frameworks: .NET 6.0, .NET 7.0, .NET 8.0, .NET 9.0, .NET 10.0
  • License: Apache-2.0

Installation

dotnet add package LegioSoft.Radar.SDK

Version 2 matches the current Radar response. It removes the obsolete FraudScore, Proxy, LegioRadarProxyInfo, LegioRadarProxyTypes, and ProxyLookupFailed members. Use IsProxy and Classification for proxy and risk decisions. Authentication uses X-Client-ID and X-API-Key request headers, so credentials are never placed in lookup URLs.

Setup

using LegioSoft.Radar.SDK.DependencyInjection;

builder.Services.AddLegioRadar(options =>
{
    options.BaseAddress = new Uri("https://radar.example.com");
    options.ClientId = "client-a";
    options.ApiKey = "<api_key>";
    options.Cache.Enabled = true;
    options.Cache.KeyPrefix = "legio-radar:lookup:";
    options.Retry.MaxRetries = 2;
});

Lookup

Inject ILegioRadarClient anywhere you normally use application services, then call LookupAsync with an IPv4 or IPv6 address.

Minimal API example:

using LegioSoft.Radar.SDK.Abstractions;
using LegioSoft.Radar.SDK.Public;

app.MapGet("/risk/ip/{ipAddress}", async (
    string ipAddress,
    ILegioRadarClient radarClient,
    CancellationToken cancellationToken) =>
{
    var result = await radarClient.LookupAsync(ipAddress, cancellationToken);

    if (result.IsNotFound)
    {
        return Results.NotFound(new { error = "IP address was not found." });
    }

    if (result.IsError)
    {
        return Results.Problem(result.Error?.Message, statusCode: (int)result.StatusCode);
    }

    var lookup = result.Value!;

    return Results.Ok(new
    {
        lookup.IP,
        lookup.CountryCode,
        lookup.CountryName,
        lookup.IsProxy,
        Verdict = lookup.Classification.Verdict,
        Confidence = lookup.Classification.Confidence,
        Allow = lookup.Classification.Verdict == LegioRadarClassificationVerdict.LikelyHumanNetwork
    });
});

Service example:

using LegioSoft.Radar.SDK.Abstractions;
using LegioSoft.Radar.SDK.Public;

public sealed class IpRiskService
{
    private readonly ILegioRadarClient _radarClient;

    public IpRiskService(ILegioRadarClient radarClient)
    {
        _radarClient = radarClient;
    }

    public async Task<bool> ShouldChallengeAsync(string ipAddress, CancellationToken cancellationToken = default)
    {
        var result = await _radarClient.LookupAsync(ipAddress, cancellationToken);

        if (result.IsNotFound)
        {
            return true;
        }

        var lookup = result.EnsureSuccess();

        return lookup.IsProxy ||
               lookup.Classification.IsLikelyBot ||
               lookup.Classification.Verdict is LegioRadarClassificationVerdict.HostingOrDatacenter
                   or LegioRadarClassificationVerdict.ProxyOrAnonymizer
                   or LegioRadarClassificationVerdict.Suspicious;
    }
}

Direct result handling:

var result = await radarClient.LookupAsync("8.8.8.8", cancellationToken);

if (result.IsSuccess)
{
    var lookup = result.Value;
    var verdict = lookup!.Classification.Verdict;

    if (verdict == LegioRadarClassificationVerdict.LikelyHumanNetwork)
    {
        // Apply application policy.
    }
}

if (result.ErrorCode == LegioRadarErrorCode.LookupNotFound)
{
    // Handle lookup miss.
}

See Lookup SDK for the full result shape, error handling, cache, and retry options.

Build

dotnet build LegioSoft.Radar.SDK.sln

Pack

dotnet pack src/LegioSoft.Radar.SDK/LegioSoft.Radar.SDK.csproj -c Release

Documentation

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  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 is compatible.  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 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.  net9.0 is compatible.  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 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
2.0.0 169 9/8/2026
1.0.0 409 5/7/2026

Version 2 removes the obsolete nested proxy details and fraud score.

     Features:
     - Dependency injection setup through AddLegioRadar(options)
     - Typed HttpClient-based IP lookup client
     - Optional X-Client-ID and X-API-Key authentication headers
     - Configurable retry settings for transient transport and service failures
     - In-memory caching for successful lookup results
     - Fluent result model with success/error helpers
     - Proxy detection through IsProxy and classification verdicts
     - Public enums and constants for lookup classifications, errors, and network types