mirror of
https://git.joinplu.me/Plume/Plume.git
synced 2024-11-29 23:11:02 +00:00
Add an enpoint for viewing articles AP representation
This commit is contained in:
parent
a6de1040b5
commit
c282246bf2
2 changed files with 17 additions and 4 deletions
|
@ -83,6 +83,7 @@ fn main() {
|
||||||
routes::blogs::create,
|
routes::blogs::create,
|
||||||
|
|
||||||
routes::posts::details,
|
routes::posts::details,
|
||||||
|
routes::posts::activity_details,
|
||||||
routes::posts::new,
|
routes::posts::new,
|
||||||
routes::posts::new_auth,
|
routes::posts::new_auth,
|
||||||
routes::posts::create
|
routes::posts::create
|
||||||
|
|
|
@ -4,7 +4,9 @@ use rocket::response::Redirect;
|
||||||
use rocket_contrib::Template;
|
use rocket_contrib::Template;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
use activity_pub::{context, activity_pub, ActivityPub};
|
||||||
use activity_pub::activity::Create;
|
use activity_pub::activity::Create;
|
||||||
|
use activity_pub::object::Object;
|
||||||
use activity_pub::outbox::broadcast;
|
use activity_pub::outbox::broadcast;
|
||||||
use db_conn::DbConn;
|
use db_conn::DbConn;
|
||||||
use models::blogs::*;
|
use models::blogs::*;
|
||||||
|
@ -13,16 +15,21 @@ use models::posts::*;
|
||||||
use models::users::User;
|
use models::users::User;
|
||||||
use utils;
|
use utils;
|
||||||
|
|
||||||
#[get("/~/<blog>/<slug>", rank = 3)]
|
#[get("/~/<blog>/<slug>", rank = 4)]
|
||||||
fn details(blog: String, slug: String, conn: DbConn) -> String {
|
fn details(blog: String, slug: String, conn: DbConn) -> String {
|
||||||
let blog = Blog::find_by_actor_id(&*conn, blog).unwrap();
|
let blog = Blog::find_by_actor_id(&*conn, blog).unwrap();
|
||||||
let post = Post::find_by_slug(&*conn, slug).unwrap();
|
let post = Post::find_by_slug(&*conn, slug).unwrap();
|
||||||
format!("{} in {}", post.title, blog.title)
|
format!("{} in {}", post.title, blog.title)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/~/<_blog>/new", rank = 1)]
|
#[get("/~/<_blog>/<slug>", rank = 3, format = "application/activity+json")]
|
||||||
fn new(_blog: String, _user: User) -> Template {
|
fn activity_details(_blog: String, slug: String, conn: DbConn) -> ActivityPub {
|
||||||
Template::render("posts/new", HashMap::<String, String>::new())
|
// TODO: posts in different blogs may have the same slug
|
||||||
|
let post = Post::find_by_slug(&*conn, slug).unwrap();
|
||||||
|
|
||||||
|
let mut act = post.serialize(&*conn);
|
||||||
|
act["@context"] = context();
|
||||||
|
activity_pub(act)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/~/<_blog>/new", rank = 2)]
|
#[get("/~/<_blog>/new", rank = 2)]
|
||||||
|
@ -30,6 +37,11 @@ fn new_auth(_blog: String) -> Redirect {
|
||||||
utils::requires_login()
|
utils::requires_login()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[get("/~/<_blog>/new", rank = 1)]
|
||||||
|
fn new(_blog: String, _user: User) -> Template {
|
||||||
|
Template::render("posts/new", HashMap::<String, String>::new())
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(FromForm)]
|
#[derive(FromForm)]
|
||||||
struct NewPostForm {
|
struct NewPostForm {
|
||||||
pub title: String,
|
pub title: String,
|
||||||
|
|
Loading…
Reference in a new issue