Add redirection views for /profile/{id} and /post/{id} paths
This commit is contained in:
parent
367e3f37c7
commit
2e7403ef14
2 changed files with 38 additions and 1 deletions
|
@ -15,7 +15,7 @@ use crate::errors::HttpError;
|
|||
use crate::frontend::{get_post_page_url, get_profile_page_url};
|
||||
use crate::models::posts::helpers::{add_related_posts, can_view_post};
|
||||
use crate::models::posts::queries::{get_post_by_id, get_posts_by_author};
|
||||
use crate::models::users::queries::get_user_by_name;
|
||||
use crate::models::users::queries::{get_user_by_id, get_user_by_name};
|
||||
use super::actors::types::{get_local_actor, get_instance_actor};
|
||||
use super::builders::create_note::{build_note, build_create_note};
|
||||
use super::collections::{
|
||||
|
@ -27,8 +27,10 @@ use super::constants::{AP_MEDIA_TYPE, AS_MEDIA_TYPE};
|
|||
use super::identifiers::{
|
||||
local_actor_followers,
|
||||
local_actor_following,
|
||||
local_actor_id,
|
||||
local_actor_subscribers,
|
||||
local_actor_outbox,
|
||||
local_object_id,
|
||||
};
|
||||
use super::receiver::receive_activity;
|
||||
|
||||
|
@ -318,6 +320,39 @@ pub async fn object_view(
|
|||
Ok(response)
|
||||
}
|
||||
|
||||
#[get("/profile/{profile_id}")]
|
||||
pub async fn frontend_profile_redirect(
|
||||
config: web::Data<Config>,
|
||||
db_pool: web::Data<Pool>,
|
||||
profile_id: web::Path<Uuid>,
|
||||
) -> Result<HttpResponse, HttpError> {
|
||||
let db_client = &**get_database_client(&db_pool).await?;
|
||||
let user = get_user_by_id(db_client, &profile_id).await?;
|
||||
let actor_id = local_actor_id(
|
||||
&config.instance_url(),
|
||||
&user.profile.username,
|
||||
);
|
||||
let response = HttpResponse::Found()
|
||||
.append_header(("Location", actor_id))
|
||||
.finish();
|
||||
return Ok(response);
|
||||
}
|
||||
|
||||
#[get("/post/{object_id}")]
|
||||
pub async fn frontend_post_redirect(
|
||||
config: web::Data<Config>,
|
||||
internal_object_id: web::Path<Uuid>,
|
||||
) -> Result<HttpResponse, HttpError> {
|
||||
let object_id = local_object_id(
|
||||
&config.instance_url(),
|
||||
&internal_object_id,
|
||||
);
|
||||
let response = HttpResponse::Found()
|
||||
.append_header(("Location", object_id))
|
||||
.finish();
|
||||
return Ok(response);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use actix_web::http::{
|
||||
|
|
|
@ -153,6 +153,8 @@ async fn main() -> std::io::Result<()> {
|
|||
.service(activitypub::actor_scope())
|
||||
.service(activitypub::instance_actor_scope())
|
||||
.service(activitypub::object_view)
|
||||
.service(activitypub::frontend_profile_redirect)
|
||||
.service(activitypub::frontend_post_redirect)
|
||||
.service(atom::get_atom_feed)
|
||||
.service(nodeinfo::get_nodeinfo)
|
||||
.service(nodeinfo::get_nodeinfo_2_0);
|
||||
|
|
Loading…
Reference in a new issue