Skip to content
This repository was archived by the owner on Jun 1, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@

FishyFlip is an implementation of [ATProtocol](https://atproto.com/) for .NET, forked from [bluesky-net](https://github.com/dariogriffo/bluesky-net).


# IMPORTANT

FishyFlip is deprecated. I am migrating work to a new library, [CarpaNet](https://drasticactions.github.io/CarpaNet). Please go there for more information.

For documentation, check out https://fishyflip.dev

### Code Flow
Expand Down
6 changes: 5 additions & 1 deletion src/FishyFlip.AspNetCore/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
# FishyFlip.AspNetCore
# FishyFlip.AspNetCore

# IMPORTANT

FishyFlip is deprecated. I am migrating work to a new library, [CarpaNet](https://drasticactions.github.io/CarpaNet). Please go there for more information.
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ public abstract class FeedController : ControllerBase
/// Send information about interactions with feed items back to the feed generator that served them.
/// </summary>
/// <param name="interactions"></param>
/// <param name="feed"></param>
/// <param name="cancellationToken"></param>
/// <returns>Result of <see cref="FishyFlip.Lexicon.App.Bsky.Feed.SendInteractionsOutput"/></returns>
[HttpPost("/xrpc/app.bsky.feed.sendInteractions")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,17 @@ public abstract class UnspeccedController : ControllerBase
[HttpGet("/xrpc/app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetOnboardingSuggestedStarterPacksSkeletonOutput>, ATErrorResult>> GetOnboardingSuggestedStarterPacksSkeletonAsync ([FromQuery] FishyFlip.Models.ATDid? viewer = default, [FromQuery] int? limit = 10, CancellationToken cancellationToken = default);

/// <summary>
/// Get a skeleton of suggested users for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedOnboardingUsers
/// </summary>
/// <param name="viewer">DID of the account making the request (not included for public/unauthenticated queries).</param>
/// <param name="category">Category of users to get suggestions for.</param>
/// <param name="limit"></param>
/// <param name="cancellationToken"></param>
/// <returns>Result of <see cref="FishyFlip.Lexicon.App.Bsky.Unspecced.GetOnboardingSuggestedUsersSkeletonOutput"/></returns>
[HttpGet("/xrpc/app.bsky.unspecced.getOnboardingSuggestedUsersSkeleton")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetOnboardingSuggestedUsersSkeletonOutput>, ATErrorResult>> GetOnboardingSuggestedUsersSkeletonAsync ([FromQuery] FishyFlip.Models.ATDid? viewer = default, [FromQuery] string? category = default, [FromQuery] int? limit = 25, CancellationToken cancellationToken = default);

/// <summary>
/// An unspecced view of globally popular feed generators.
/// </summary>
Expand Down Expand Up @@ -102,6 +113,16 @@ public abstract class UnspeccedController : ControllerBase
[HttpGet("/xrpc/app.bsky.unspecced.getSuggestedFeedsSkeleton")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedFeedsSkeletonOutput>, ATErrorResult>> GetSuggestedFeedsSkeletonAsync ([FromQuery] FishyFlip.Models.ATDid? viewer = default, [FromQuery] int? limit = 10, CancellationToken cancellationToken = default);

/// <summary>
/// Get a list of suggested users for onboarding
/// </summary>
/// <param name="category">Category of users to get suggestions for.</param>
/// <param name="limit"></param>
/// <param name="cancellationToken"></param>
/// <returns>Result of <see cref="FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedOnboardingUsersOutput"/></returns>
[HttpGet("/xrpc/app.bsky.unspecced.getSuggestedOnboardingUsers")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedOnboardingUsersOutput>, ATErrorResult>> GetSuggestedOnboardingUsersAsync ([FromQuery] string? category = default, [FromQuery] int? limit = 25, CancellationToken cancellationToken = default);

/// <summary>
/// Get a list of suggested starterpacks
/// </summary>
Expand Down Expand Up @@ -131,6 +152,67 @@ public abstract class UnspeccedController : ControllerBase
[HttpGet("/xrpc/app.bsky.unspecced.getSuggestedUsers")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersOutput>, ATErrorResult>> GetSuggestedUsersAsync ([FromQuery] string? category = default, [FromQuery] int? limit = 25, CancellationToken cancellationToken = default);

/// <summary>
/// Get a list of suggested users for the Discover page
/// </summary>
/// <param name="limit"></param>
/// <param name="cancellationToken"></param>
/// <returns>Result of <see cref="FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForDiscoverOutput"/></returns>
[HttpGet("/xrpc/app.bsky.unspecced.getSuggestedUsersForDiscover")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForDiscoverOutput>, ATErrorResult>> GetSuggestedUsersForDiscoverAsync ([FromQuery] int? limit = 25, CancellationToken cancellationToken = default);

/// <summary>
/// Get a skeleton of suggested users for the Discover page. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsersForDiscover
/// </summary>
/// <param name="viewer">DID of the account making the request (not included for public/unauthenticated queries).</param>
/// <param name="limit"></param>
/// <param name="cancellationToken"></param>
/// <returns>Result of <see cref="FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForDiscoverSkeletonOutput"/></returns>
[HttpGet("/xrpc/app.bsky.unspecced.getSuggestedUsersForDiscoverSkeleton")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForDiscoverSkeletonOutput>, ATErrorResult>> GetSuggestedUsersForDiscoverSkeletonAsync ([FromQuery] FishyFlip.Models.ATDid? viewer = default, [FromQuery] int? limit = 25, CancellationToken cancellationToken = default);

/// <summary>
/// Get a list of suggested users for the Explore page
/// </summary>
/// <param name="category">Category of users to get suggestions for.</param>
/// <param name="limit"></param>
/// <param name="cancellationToken"></param>
/// <returns>Result of <see cref="FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForExploreOutput"/></returns>
[HttpGet("/xrpc/app.bsky.unspecced.getSuggestedUsersForExplore")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForExploreOutput>, ATErrorResult>> GetSuggestedUsersForExploreAsync ([FromQuery] string? category = default, [FromQuery] int? limit = 25, CancellationToken cancellationToken = default);

/// <summary>
/// Get a skeleton of suggested users for the Explore page. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsersForExplore
/// </summary>
/// <param name="viewer">DID of the account making the request (not included for public/unauthenticated queries).</param>
/// <param name="category">Category of users to get suggestions for.</param>
/// <param name="limit"></param>
/// <param name="cancellationToken"></param>
/// <returns>Result of <see cref="FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForExploreSkeletonOutput"/></returns>
[HttpGet("/xrpc/app.bsky.unspecced.getSuggestedUsersForExploreSkeleton")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForExploreSkeletonOutput>, ATErrorResult>> GetSuggestedUsersForExploreSkeletonAsync ([FromQuery] FishyFlip.Models.ATDid? viewer = default, [FromQuery] string? category = default, [FromQuery] int? limit = 25, CancellationToken cancellationToken = default);

/// <summary>
/// Get a list of suggested users for the See More page
/// </summary>
/// <param name="category">Category of users to get suggestions for.</param>
/// <param name="limit"></param>
/// <param name="cancellationToken"></param>
/// <returns>Result of <see cref="FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForSeeMoreOutput"/></returns>
[HttpGet("/xrpc/app.bsky.unspecced.getSuggestedUsersForSeeMore")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForSeeMoreOutput>, ATErrorResult>> GetSuggestedUsersForSeeMoreAsync ([FromQuery] string? category = default, [FromQuery] int? limit = 25, CancellationToken cancellationToken = default);

/// <summary>
/// Get a skeleton of suggested users for the See More page. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsersForSeeMore
/// </summary>
/// <param name="viewer">DID of the account making the request (not included for public/unauthenticated queries).</param>
/// <param name="category">Category of users to get suggestions for.</param>
/// <param name="limit"></param>
/// <param name="cancellationToken"></param>
/// <returns>Result of <see cref="FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForSeeMoreSkeletonOutput"/></returns>
[HttpGet("/xrpc/app.bsky.unspecced.getSuggestedUsersForSeeMoreSkeleton")]
public abstract Task<Results<ATResult<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForSeeMoreSkeletonOutput>, ATErrorResult>> GetSuggestedUsersForSeeMoreSkeletonAsync ([FromQuery] FishyFlip.Models.ATDid? viewer = default, [FromQuery] string? category = default, [FromQuery] int? limit = 25, CancellationToken cancellationToken = default);

/// <summary>
/// Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public abstract class ModerationController : ControllerBase
/// <see cref="FishyFlip.Lexicon.Tools.Ozone.Moderation.ModEventPriorityScore"/> (tools.ozone.moderation.defs#modEventPriorityScore) <br/>
/// <see cref="FishyFlip.Lexicon.Tools.Ozone.Moderation.AgeAssuranceEvent"/> (tools.ozone.moderation.defs#ageAssuranceEvent) <br/>
/// <see cref="FishyFlip.Lexicon.Tools.Ozone.Moderation.AgeAssuranceOverrideEvent"/> (tools.ozone.moderation.defs#ageAssuranceOverrideEvent) <br/>
/// <see cref="FishyFlip.Lexicon.Tools.Ozone.Moderation.AgeAssurancePurgeEvent"/> (tools.ozone.moderation.defs#ageAssurancePurgeEvent) <br/>
/// <see cref="FishyFlip.Lexicon.Tools.Ozone.Moderation.RevokeAccountCredentialsEvent"/> (tools.ozone.moderation.defs#revokeAccountCredentialsEvent) <br/>
/// <see cref="FishyFlip.Lexicon.Tools.Ozone.Moderation.ScheduleTakedownEvent"/> (tools.ozone.moderation.defs#scheduleTakedownEvent) <br/>
/// <see cref="FishyFlip.Lexicon.Tools.Ozone.Moderation.CancelScheduledTakedownEvent"/> (tools.ozone.moderation.defs#cancelScheduledTakedownEvent) <br/>
Expand Down
4 changes: 4 additions & 0 deletions src/FishyFlip.Xrpc/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# FishyFlip.Xrpc - a .NET ATProtocol/Bluesky Library for XRPC endpoints

# IMPORTANT

FishyFlip is deprecated. I am migrating work to a new library, [CarpaNet](https://drasticactions.github.io/CarpaNet). Please go there for more information.

[![NuGet Version](https://img.shields.io/nuget/v/FishyFlip.Xrpc.svg)](https://www.nuget.org/packages/FishyFlip.Xrpc/) ![License](https://img.shields.io/badge/License-MIT-blue.svg)

![FishyFlip.Xrpc Logo](https://user-images.githubusercontent.com/898335/253740405-4b0ae177-cc49-4c26-b6b0-ab8e835a0e62.png)
Expand Down
18 changes: 18 additions & 0 deletions src/FishyFlip/Lexicon/ATObject.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ public override string ToString()
return JsonSerializer.Deserialize<FishyFlip.Lexicon.Tools.Ozone.Moderation.AgeAssuranceEvent>(data, (JsonTypeInfo<FishyFlip.Lexicon.Tools.Ozone.Moderation.AgeAssuranceEvent>)SourceGenerationContext.Default.ToolsOzoneModerationAgeAssuranceEvent);
case "tools.ozone.moderation.defs#ageAssuranceOverrideEvent":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.Tools.Ozone.Moderation.AgeAssuranceOverrideEvent>(data, (JsonTypeInfo<FishyFlip.Lexicon.Tools.Ozone.Moderation.AgeAssuranceOverrideEvent>)SourceGenerationContext.Default.ToolsOzoneModerationAgeAssuranceOverrideEvent);
case "tools.ozone.moderation.defs#ageAssurancePurgeEvent":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.Tools.Ozone.Moderation.AgeAssurancePurgeEvent>(data, (JsonTypeInfo<FishyFlip.Lexicon.Tools.Ozone.Moderation.AgeAssurancePurgeEvent>)SourceGenerationContext.Default.ToolsOzoneModerationAgeAssurancePurgeEvent);
case "app.bsky.unspecced.defs#ageAssuranceState":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.AgeAssuranceState>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.AgeAssuranceState>)SourceGenerationContext.Default.AppBskyUnspeccedAgeAssuranceState);
case "com.atproto.repo.applyWrites#ApplyWritesInput":
Expand Down Expand Up @@ -446,6 +448,8 @@ public override string ToString()
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetOnboardingSuggestedStarterPacksOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetOnboardingSuggestedStarterPacksOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetOnboardingSuggestedStarterPacksOutput);
case "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton#GetOnboardingSuggestedStarterPacksSkeletonOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetOnboardingSuggestedStarterPacksSkeletonOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetOnboardingSuggestedStarterPacksSkeletonOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeletonOutput);
case "app.bsky.unspecced.getOnboardingSuggestedUsersSkeleton#GetOnboardingSuggestedUsersSkeletonOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetOnboardingSuggestedUsersSkeletonOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetOnboardingSuggestedUsersSkeletonOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetOnboardingSuggestedUsersSkeletonOutput);
case "app.bsky.unspecced.getPopularFeedGenerators#GetPopularFeedGeneratorsOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetPopularFeedGeneratorsOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetPopularFeedGeneratorsOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetPopularFeedGeneratorsOutput);
case "app.bsky.feed.getPosts#GetPostsOutput":
Expand Down Expand Up @@ -506,10 +510,24 @@ public override string ToString()
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedFeedsSkeletonOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedFeedsSkeletonOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedFeedsSkeletonOutput);
case "app.bsky.graph.getSuggestedFollowsByActor#GetSuggestedFollowsByActorOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Graph.GetSuggestedFollowsByActorOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Graph.GetSuggestedFollowsByActorOutput>)SourceGenerationContext.Default.AppBskyGraphGetSuggestedFollowsByActorOutput);
case "app.bsky.unspecced.getSuggestedOnboardingUsers#GetSuggestedOnboardingUsersOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedOnboardingUsersOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedOnboardingUsersOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedOnboardingUsersOutput);
case "app.bsky.unspecced.getSuggestedStarterPacks#GetSuggestedStarterPacksOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedStarterPacksOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedStarterPacksOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedStarterPacksOutput);
case "app.bsky.unspecced.getSuggestedStarterPacksSkeleton#GetSuggestedStarterPacksSkeletonOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedStarterPacksSkeletonOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedStarterPacksSkeletonOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedStarterPacksSkeletonOutput);
case "app.bsky.unspecced.getSuggestedUsersForDiscover#GetSuggestedUsersForDiscoverOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForDiscoverOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForDiscoverOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedUsersForDiscoverOutput);
case "app.bsky.unspecced.getSuggestedUsersForDiscoverSkeleton#GetSuggestedUsersForDiscoverSkeletonOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForDiscoverSkeletonOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForDiscoverSkeletonOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedUsersForDiscoverSkeletonOutput);
case "app.bsky.unspecced.getSuggestedUsersForExplore#GetSuggestedUsersForExploreOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForExploreOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForExploreOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedUsersForExploreOutput);
case "app.bsky.unspecced.getSuggestedUsersForExploreSkeleton#GetSuggestedUsersForExploreSkeletonOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForExploreSkeletonOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForExploreSkeletonOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedUsersForExploreSkeletonOutput);
case "app.bsky.unspecced.getSuggestedUsersForSeeMore#GetSuggestedUsersForSeeMoreOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForSeeMoreOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForSeeMoreOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedUsersForSeeMoreOutput);
case "app.bsky.unspecced.getSuggestedUsersForSeeMoreSkeleton#GetSuggestedUsersForSeeMoreSkeletonOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForSeeMoreSkeletonOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersForSeeMoreSkeletonOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedUsersForSeeMoreSkeletonOutput);
case "app.bsky.unspecced.getSuggestedUsers#GetSuggestedUsersOutput":
return JsonSerializer.Deserialize<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersOutput>(data, (JsonTypeInfo<FishyFlip.Lexicon.App.Bsky.Unspecced.GetSuggestedUsersOutput>)SourceGenerationContext.Default.AppBskyUnspeccedGetSuggestedUsersOutput);
case "app.bsky.unspecced.getSuggestedUsersSkeleton#GetSuggestedUsersSkeletonOutput":
Expand Down
Loading
Loading