FishyFlip.Xrpc 3.11.0-alpha.3

This is a prerelease version of FishyFlip.Xrpc.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package FishyFlip.Xrpc --version 3.11.0-alpha.3
                    
NuGet\Install-Package FishyFlip.Xrpc -Version 3.11.0-alpha.3
                    
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="FishyFlip.Xrpc" Version="3.11.0-alpha.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FishyFlip.Xrpc" Version="3.11.0-alpha.3" />
                    
Directory.Packages.props
<PackageReference Include="FishyFlip.Xrpc" />
                    
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 FishyFlip.Xrpc --version 3.11.0-alpha.3
                    
#r "nuget: FishyFlip.Xrpc, 3.11.0-alpha.3"
                    
#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 FishyFlip.Xrpc@3.11.0-alpha.3
                    
#: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=FishyFlip.Xrpc&version=3.11.0-alpha.3&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=FishyFlip.Xrpc&version=3.11.0-alpha.3&prerelease
                    
Install as a Cake Tool

FishyFlip.Xrpc - a .NET ATProtocol/Bluesky Library for XRPC endpoints

NuGet Version License

FishyFlip.Xrpc Logo

FishyFlip.Xrpc is an experimental implmentation of the ATProtocol XRPC specification through source generation. It maps the XRPC entries listed in Bluesky and other ATProtocol lexicons to ASP.NET MVC controllers. As it binds to FishyFlip's existing classes, it can handle model and parameter validation, and being source generated along with FishyFlip can map to the latest changes in the lexicons whenever a value changes. This should make it easier to keep up with the upstream sources.

As an example

public class FFBlogController : FishyFlip.Xrpc.Lexicon.Com.Whtwnd.Blog.BlogController
{
    /// <inheritdoc/>
    public async override Task<Results<Ok<GetAuthorPostsOutput>, ATErrorResult>> GetAuthorPostsAsync(ATDid author, CancellationToken cancellationToken = default)
    {
        return ATErrorResult.NotFound();
    }

    /// <inheritdoc/>
    public async override Task<Results<Ok<GetEntryMetadataByNameOutput>, ATErrorResult>> GetEntryMetadataByNameAsync([FromQuery] ATIdentifier author, [FromQuery] string entryTitle, CancellationToken cancellationToken = default)
    {
        return ATErrorResult.BadRequest();
    }

    public async override Task<Results<Ok<GetMentionsByEntryOutput>, ATErrorResult>> GetMentionsByEntryAsync([FromQuery] ATUri postUri, CancellationToken cancellationToken = default)
    {
        return ATErrorResult.InternalServerError();
    }

    public async override Task<Results<Ok<NotifyOfNewEntryOutput>, ATErrorResult>> NotifyOfNewEntryAsync([FromBody] ATUri entryUri, CancellationToken cancellationToken = default)
    {
        var result = new NotifyOfNewEntryOutput();
        return TypedResults.Ok(result);
    }
}

This implmentation maps to the WhtWnd Lexicon XRPC endpoints, and can either return the object expected by the lexicon, or an error object that maps to the XRPC error methods.

ATErrorResult

ATErrorResult is an IResult that maps to the listed documented expected error results, with a JSON object in a format that's expected. There is no direct list of expected response Error messages and detail messages, but the format should at least map to what Bluesky itself uses.

Product Compatible and additional computed target framework versions.
.NET 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 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. 
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
3.11.0-alpha.11 0 7/25/2025
3.11.0-alpha.9 108 7/23/2025
3.11.0-alpha.8 110 7/22/2025
3.11.0-alpha.7 108 7/16/2025
3.11.0-alpha.6 111 7/14/2025
3.11.0-alpha.5 89 7/11/2025
3.11.0-alpha.4 101 7/4/2025
3.11.0-alpha.3 61 6/27/2025
3.11.0-alpha.2 79 6/21/2025
3.11.0-alpha.1 115 6/16/2025
3.10.0 288 6/13/2025
3.10.0-alpha.21 258 6/13/2025
3.10.0-alpha.20 176 6/8/2025
3.10.0-alpha.19 125 6/5/2025
3.10.0-alpha.18 119 6/4/2025
3.10.0-alpha.17 116 6/3/2025
3.10.0-alpha.16 98 5/30/2025
3.10.0-alpha.15 119 5/28/2025
3.10.0-alpha.14 104 5/23/2025
3.10.0-alpha.13 119 5/22/2025
3.10.0-alpha.12 117 5/21/2025
3.10.0-alpha.11 120 5/18/2025
3.10.0-alpha.10 195 5/12/2025
3.10.0-alpha.9 111 5/11/2025
3.10.0-alpha.8 73 5/9/2025
3.10.0-alpha.7 122 5/9/2025
3.10.0-alpha.6 132 5/8/2025
3.10.0-alpha.5 218 5/7/2025