Use the ApRequest guard for routes that need it + Fix a few issues with its impl

Also fixes some Rocket warnings!
This commit is contained in:
Bat
2018-07-11 17:30:01 +02:00
parent 8e47219d82
commit b95e384ed7
8 changed files with 177 additions and 22 deletions
+3 -3
View File
@@ -8,7 +8,7 @@ use serde_json;
use std::{collections::HashMap, borrow::Cow};
use validator::{Validate, ValidationError, ValidationErrors};
use plume_common::activity_pub::ActivityStream;
use plume_common::activity_pub::{ActivityStream, ApRequest};
use plume_common::utils;
use plume_models::{
blog_authors::*,
@@ -33,8 +33,8 @@ fn details(name: String, conn: DbConn, user: Option<User>) -> Template {
})
}
#[get("/~/<name>", format = "application/activity+json", rank = 1)]
fn activity_details(name: String, conn: DbConn) -> ActivityStream<CustomGroup> {
#[get("/~/<name>", rank = 1)]
fn activity_details(name: String, conn: DbConn, _ap: ApRequest) -> ActivityStream<CustomGroup> {
let blog = Blog::find_local(&*conn, name).unwrap();
ActivityStream::new(blog.into_activity(&*conn))
}
+3 -3
View File
@@ -7,7 +7,7 @@ use serde_json;
use std::{collections::HashMap, borrow::Cow};
use validator::{Validate, ValidationError, ValidationErrors};
use plume_common::activity_pub::{broadcast, ActivityStream};
use plume_common::activity_pub::{broadcast, ActivityStream, ApRequest};
use plume_common::utils;
use plume_models::{
blogs::*,
@@ -55,8 +55,8 @@ fn details_response(blog: String, slug: String, conn: DbConn, user: Option<User>
})
}
#[get("/~/<blog>/<slug>", rank = 3, format = "application/activity+json")]
fn activity_details(blog: String, slug: String, conn: DbConn) -> ActivityStream<Article> {
#[get("/~/<blog>/<slug>", rank = 3)]
fn activity_details(blog: String, slug: String, conn: DbConn, _ap: ApRequest) -> ActivityStream<Article> {
let blog = Blog::find_by_fqn(&*conn, blog).unwrap();
let post = Post::find_by_slug(&*conn, slug, blog.id).unwrap();
+5 -5
View File
@@ -10,7 +10,7 @@ use serde_json;
use validator::{Validate, ValidationError};
use plume_common::activity_pub::{
ActivityStream, broadcast, Id, IntoId,
ActivityStream, broadcast, Id, IntoId, ApRequest,
inbox::{Notify}
};
use plume_common::utils;
@@ -112,8 +112,8 @@ fn followers(name: String, conn: DbConn, account: Option<User>) -> Template {
})
}
#[get("/@/<name>", format = "application/activity+json", rank = 1)]
fn activity_details(name: String, conn: DbConn) -> ActivityStream<CustomPerson> {
#[get("/@/<name>", rank = 1)]
fn activity_details(name: String, conn: DbConn, _ap: ApRequest) -> ActivityStream<CustomPerson> {
let user = User::find_local(&*conn, name).unwrap();
ActivityStream::new(user.into_activity(&*conn))
}
@@ -222,8 +222,8 @@ fn inbox(name: String, conn: DbConn, data: String) -> String {
}
}
#[get("/@/<name>/followers", format = "application/activity+json")]
fn ap_followers(name: String, conn: DbConn) -> ActivityStream<OrderedCollection> {
#[get("/@/<name>/followers")]
fn ap_followers(name: String, conn: DbConn, _ap: ApRequest) -> ActivityStream<OrderedCollection> {
let user = User::find_local(&*conn, name).unwrap();
let followers = user.get_followers(&*conn).into_iter().map(|f| Id::new(f.ap_url)).collect::<Vec<Id>>();