feat: API endpoints for any user's following/followers
This commit is contained in:
@@ -770,6 +770,50 @@ pub async fn get_followers(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "federation")]
|
||||||
|
pub async fn get_user_following(
|
||||||
|
State(state): State<AppState>,
|
||||||
|
_user: AuthenticatedUser,
|
||||||
|
Path(user_id): Path<Uuid>,
|
||||||
|
) -> impl IntoResponse {
|
||||||
|
match state.ap_service.get_following(user_id).await {
|
||||||
|
Ok(actors) => Json(ActorListResponse {
|
||||||
|
actors: actors
|
||||||
|
.into_iter()
|
||||||
|
.map(|a| RemoteActorDto {
|
||||||
|
handle: a.handle,
|
||||||
|
display_name: a.display_name,
|
||||||
|
url: a.url,
|
||||||
|
})
|
||||||
|
.collect(),
|
||||||
|
})
|
||||||
|
.into_response(),
|
||||||
|
Err(e) => ap_err(e).into_response(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "federation")]
|
||||||
|
pub async fn get_user_followers(
|
||||||
|
State(state): State<AppState>,
|
||||||
|
_user: AuthenticatedUser,
|
||||||
|
Path(user_id): Path<Uuid>,
|
||||||
|
) -> impl IntoResponse {
|
||||||
|
match state.ap_service.get_accepted_followers(user_id).await {
|
||||||
|
Ok(actors) => Json(ActorListResponse {
|
||||||
|
actors: actors
|
||||||
|
.into_iter()
|
||||||
|
.map(|a| RemoteActorDto {
|
||||||
|
handle: a.handle,
|
||||||
|
display_name: a.display_name,
|
||||||
|
url: a.url,
|
||||||
|
})
|
||||||
|
.collect(),
|
||||||
|
})
|
||||||
|
.into_response(),
|
||||||
|
Err(e) => ap_err(e).into_response(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "federation")]
|
#[cfg(feature = "federation")]
|
||||||
#[utoipa::path(
|
#[utoipa::path(
|
||||||
post, path = "/api/v1/social/follow",
|
post, path = "/api/v1/social/follow",
|
||||||
|
|||||||
@@ -322,6 +322,14 @@ fn api_routes(rate_limit: u64) -> Router<AppState> {
|
|||||||
)
|
)
|
||||||
.route("/users", routing::get(handlers::api::list_users))
|
.route("/users", routing::get(handlers::api::list_users))
|
||||||
.route("/users/{id}", routing::get(handlers::api::get_user_profile))
|
.route("/users/{id}", routing::get(handlers::api::get_user_profile))
|
||||||
|
.route(
|
||||||
|
"/users/{id}/following",
|
||||||
|
routing::get(handlers::api::get_user_following),
|
||||||
|
)
|
||||||
|
.route(
|
||||||
|
"/users/{id}/followers",
|
||||||
|
routing::get(handlers::api::get_user_followers),
|
||||||
|
)
|
||||||
.route(
|
.route(
|
||||||
"/import/sessions",
|
"/import/sessions",
|
||||||
routing::post(handlers::import::api_post_session),
|
routing::post(handlers::import::api_post_session),
|
||||||
|
|||||||
Reference in New Issue
Block a user