Parakeet is a Rust-based Bluesky AppServer aiming to implement most of the functionality required to support the Bluesky client
appview atproto bluesky rust appserver

chore(parakeet): TODO the bulk of the remaining xrpc functions

+23 -2
+23 -2
parakeet/src/xrpc/app_bsky/mod.rs
··· 11 11 Router::new() 12 12 .route("/app.bsky.actor.getProfile", get(actor::get_profile)) 13 13 .route("/app.bsky.actor.getProfiles", get(actor::get_profiles)) 14 + // TODO: app.bsky.actor.getSuggestions (recs) 15 + // TODO: app.bsky.actor.searchActor (search) 16 + // TODO: app.bsky.actor.searchActorTypeahead (search) 14 17 .route("/app.bsky.feed.getActorFeeds", get(feed::feedgen::get_actor_feeds)) 15 18 .route("/app.bsky.feed.getActorLikes", get(feed::likes::get_actor_likes)) 16 19 .route("/app.bsky.feed.getAuthorFeed", get(feed::posts::get_author_feed)) 17 20 .route("/app.bsky.feed.getFeed", get(feed::posts::get_feed)) 21 + .route("/app.bsky.feed.getFeedGenerator", get(feed::feedgen::get_feed_generator)) 22 + .route("/app.bsky.feed.getFeedGenerators", get(feed::feedgen::get_feed_generators)) 18 23 .route("/app.bsky.feed.getLikes", get(feed::likes::get_likes)) 19 24 .route("/app.bsky.feed.getListFeed", get(feed::posts::get_list_feed)) 20 25 .route("/app.bsky.feed.getPostThread", get(feed::posts::get_post_thread)) 21 26 .route("/app.bsky.feed.getPosts", get(feed::posts::get_posts)) 22 27 .route("/app.bsky.feed.getQuotes", get(feed::posts::get_quotes)) 23 28 .route("/app.bsky.feed.getRepostedBy", get(feed::posts::get_reposted_by)) 24 - .route("/app.bsky.feed.getFeedGenerator", get(feed::feedgen::get_feed_generator)) 25 - .route("/app.bsky.feed.getFeedGenerators", get(feed::feedgen::get_feed_generators)) 29 + // TODO: app.bsky.feed.getSuggestedFeeds (recs) 30 + // TODO: app.bsky.feed.getTimeline (complicated) 31 + // TODO: app.bsky.feed.searchPosts (search) 26 32 .route("/app.bsky.graph.getActorStarterPacks", get(graph::starter_packs::get_actor_starter_packs)) 33 + // TODO: app.bsky.graph.getBlocks 27 34 .route("/app.bsky.graph.getFollowers", get(graph::relations::get_followers)) 28 35 .route("/app.bsky.graph.getFollows", get(graph::relations::get_follows)) 36 + // TODO: app.bsky.graph.getKnownFollowers 29 37 .route("/app.bsky.graph.getList", get(graph::lists::get_list)) 38 + // TODO: app.bsky.graph.getListBlocks 30 39 .route("/app.bsky.graph.getListMutes", get(graph::lists::get_list_mutes)) 31 40 .route("/app.bsky.graph.getLists", get(graph::lists::get_lists)) 32 41 .route("/app.bsky.graph.getMutes", get(graph::mutes::get_mutes)) 42 + // TODO: app.bsky.graph.getRelationships 33 43 .route("/app.bsky.graph.getStarterPack", get(graph::starter_packs::get_starter_pack)) 34 44 .route("/app.bsky.graph.getStarterPacks", get(graph::starter_packs::get_starter_packs)) 45 + // TODO: app.bsky.graph.getSuggestedFollows (recs) 35 46 .route("/app.bsky.graph.muteActor", post(graph::mutes::mute_actor)) 36 47 .route("/app.bsky.graph.muteActorList", post(graph::mutes::mute_actor_list)) 48 + // TODO: app.bsky.graph.muteThread (notifs) 49 + // TODO: app.bsky.graph.searchStarterPacks (search) 37 50 .route("/app.bsky.graph.unmuteActor", post(graph::mutes::unmute_actor)) 38 51 .route("/app.bsky.graph.unmuteActorList", post(graph::mutes::unmute_actor_list)) 52 + // TODO: app.bsky.graph.unmuteThread (notifs) 39 53 .route("/app.bsky.labeler.getServices", get(labeler::get_services)) 54 + // TODO: app.bsky.notification.getPreferences 55 + // TODO: app.bsky.notification.getUnreadCount 56 + // TODO: app.bsky.notification.listActivitySubscriptions 57 + // TODO: app.bsky.notification.listNotifications 58 + // TODO: app.bsky.notification.putActivitySubscriptions 59 + // TODO: app.bsky.notification.putPreferences 60 + // TODO: app.bsky.notification.putPreferencesV2 40 61 }