fix some, break some compiling by adding async/await in front of it
i forgot that we can't `Send` diesel connections over threads, so this is going to require some rethinking.
This commit is contained in:
parent
3c830ab0ce
commit
44ebce516c
@ -71,7 +71,8 @@ impl Blog {
|
|||||||
insert!(blogs, NewBlog, |inserted, conn| {
|
insert!(blogs, NewBlog, |inserted, conn| {
|
||||||
let instance = inserted.get_instance(conn)?;
|
let instance = inserted.get_instance(conn)?;
|
||||||
if inserted.outbox_url.is_empty() {
|
if inserted.outbox_url.is_empty() {
|
||||||
inserted.outbox_url = instance.compute_box(BLOG_PREFIX, &inserted.actor_id, "outbox");
|
inserted.outbox_url =
|
||||||
|
instance.compute_box(BLOG_PREFIX, &inserted.actor_id, r#"outbox"#);
|
||||||
}
|
}
|
||||||
|
|
||||||
if inserted.inbox_url.is_empty() {
|
if inserted.inbox_url.is_empty() {
|
||||||
|
@ -66,14 +66,14 @@ pub struct OAuthRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[get("/oauth2?<query..>")]
|
#[get("/oauth2?<query..>")]
|
||||||
pub fn oauth(
|
pub async fn oauth(
|
||||||
query: Form<OAuthRequest>,
|
query: Form<OAuthRequest>,
|
||||||
rockets: PlumeRocket,
|
rockets: PlumeRocket,
|
||||||
) -> Result<Json<serde_json::Value>, ApiError> {
|
) -> Result<Json<serde_json::Value>, ApiError> {
|
||||||
let conn = &*rockets.conn;
|
let conn = &*rockets.conn;
|
||||||
let app = App::find_by_client_id(conn, &query.client_id)?;
|
let app = App::find_by_client_id(conn, &query.client_id)?;
|
||||||
if app.client_secret == query.client_secret {
|
if app.client_secret == query.client_secret {
|
||||||
if let Outcome::Success(user) = User::find_by_fqn(&rockets, &query.username) {
|
if let Ok(user) = User::find_by_fqn(&rockets, &query.username).await {
|
||||||
if user.auth(&query.password) {
|
if user.auth(&query.password) {
|
||||||
let token = ApiToken::insert(
|
let token = ApiToken::insert(
|
||||||
conn,
|
conn,
|
||||||
|
@ -98,7 +98,7 @@ pub fn list(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[post("/posts", data = "<payload>")]
|
#[post("/posts", data = "<payload>")]
|
||||||
pub fn create(
|
pub async fn create(
|
||||||
auth: Authorization<Write, Post>,
|
auth: Authorization<Write, Post>,
|
||||||
payload: Json<NewPostData>,
|
payload: Json<NewPostData>,
|
||||||
rockets: PlumeRocket,
|
rockets: PlumeRocket,
|
||||||
@ -192,7 +192,7 @@ pub fn create(
|
|||||||
for m in mentions.into_iter() {
|
for m in mentions.into_iter() {
|
||||||
Mention::from_activity(
|
Mention::from_activity(
|
||||||
&*conn,
|
&*conn,
|
||||||
&Mention::build_activity(&rockets, &m)?,
|
&Mention::build_activity(&rockets, &m).await?,
|
||||||
post.id,
|
post.id,
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
|
@ -38,12 +38,12 @@ pub fn details(name: String, page: Option<Page>, rockets: PlumeRocket) -> Result
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[get("/~/<name>", rank = 1)]
|
#[get("/~/<name>", rank = 1)]
|
||||||
pub fn activity_details(
|
pub async fn activity_details(
|
||||||
name: String,
|
name: String,
|
||||||
rockets: PlumeRocket,
|
rockets: PlumeRocket,
|
||||||
_ap: ApRequest,
|
_ap: ApRequest,
|
||||||
) -> Option<ActivityStream<CustomGroup>> {
|
) -> Option<ActivityStream<CustomGroup>> {
|
||||||
let blog = Blog::find_by_fqn(&rockets, &name).ok()?;
|
let blog = Blog::find_by_fqn(&rockets, &name).await?.ok()?;
|
||||||
Some(ActivityStream::new(blog.to_activity(&*rockets.conn).ok()?))
|
Some(ActivityStream::new(blog.to_activity(&*rockets.conn).ok()?))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ pub fn create(form: LenientForm<NewBlogForm>, rockets: PlumeRocket) -> RespondOr
|
|||||||
Ok(_) => ValidationErrors::new(),
|
Ok(_) => ValidationErrors::new(),
|
||||||
Err(e) => e,
|
Err(e) => e,
|
||||||
};
|
};
|
||||||
if Blog::find_by_fqn(&rockets, &slug).is_ok() {
|
if Blog::find_by_fqn(&rockets, &slug).await.is_ok() {
|
||||||
errors.add(
|
errors.add(
|
||||||
"title",
|
"title",
|
||||||
ValidationError {
|
ValidationError {
|
||||||
@ -184,9 +184,9 @@ pub struct EditForm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[get("/~/<name>/edit")]
|
#[get("/~/<name>/edit")]
|
||||||
pub fn edit(name: String, rockets: PlumeRocket) -> Result<Ructe, ErrorPage> {
|
pub async fn edit(name: String, rockets: PlumeRocket) -> Result<Ructe, ErrorPage> {
|
||||||
let conn = &*rockets.conn;
|
let conn = &*rockets.conn;
|
||||||
let blog = Blog::find_by_fqn(&rockets, &name)?;
|
let blog = Blog::find_by_fqn(&rockets, &name).await?;
|
||||||
if rockets
|
if rockets
|
||||||
.user
|
.user
|
||||||
.clone()
|
.clone()
|
||||||
@ -233,14 +233,16 @@ fn check_media(conn: &Connection, id: i32, user: &User) -> bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[put("/~/<name>/edit", data = "<form>")]
|
#[put("/~/<name>/edit", data = "<form>")]
|
||||||
pub fn update(
|
pub async fn update(
|
||||||
name: String,
|
name: String,
|
||||||
form: LenientForm<EditForm>,
|
form: LenientForm<EditForm>,
|
||||||
rockets: PlumeRocket,
|
rockets: PlumeRocket,
|
||||||
) -> RespondOrRedirect {
|
) -> RespondOrRedirect {
|
||||||
let conn = &*rockets.conn;
|
let conn = &*rockets.conn;
|
||||||
let intl = &rockets.intl.catalog;
|
let intl = &rockets.intl.catalog;
|
||||||
let mut blog = Blog::find_by_fqn(&rockets, &name).expect("blog::update: blog not found");
|
let mut blog = Blog::find_by_fqn(&rockets, &name)
|
||||||
|
.await
|
||||||
|
.expect("blog::update: blog not found");
|
||||||
if !rockets
|
if !rockets
|
||||||
.user
|
.user
|
||||||
.clone()
|
.clone()
|
||||||
@ -342,23 +344,26 @@ pub fn update(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[get("/~/<name>/outbox")]
|
#[get("/~/<name>/outbox")]
|
||||||
pub fn outbox(name: String, rockets: PlumeRocket) -> Option<ActivityStream<OrderedCollection>> {
|
pub async fn outbox(
|
||||||
let blog = Blog::find_by_fqn(&rockets, &name).ok()?;
|
name: String,
|
||||||
|
rockets: PlumeRocket,
|
||||||
|
) -> Option<ActivityStream<OrderedCollection>> {
|
||||||
|
let blog = Blog::find_by_fqn(&rockets, &name).await?.ok()?;
|
||||||
Some(blog.outbox(&*rockets.conn).ok()?)
|
Some(blog.outbox(&*rockets.conn).ok()?)
|
||||||
}
|
}
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
#[get("/~/<name>/outbox?<page>")]
|
#[get("/~/<name>/outbox?<page>")]
|
||||||
pub fn outbox_page(
|
pub async fn outbox_page(
|
||||||
name: String,
|
name: String,
|
||||||
page: Page,
|
page: Page,
|
||||||
rockets: PlumeRocket,
|
rockets: PlumeRocket,
|
||||||
) -> Option<ActivityStream<OrderedCollectionPage>> {
|
) -> Option<ActivityStream<OrderedCollectionPage>> {
|
||||||
let blog = Blog::find_by_fqn(&rockets, &name).ok()?;
|
let blog = Blog::find_by_fqn(&rockets, &name).await?.ok()?;
|
||||||
Some(blog.outbox_page(&*rockets.conn, page.limits()).ok()?)
|
Some(blog.outbox_page(&*rockets.conn, page.limits()).ok()?)
|
||||||
}
|
}
|
||||||
#[get("/~/<name>/atom.xml")]
|
#[get("/~/<name>/atom.xml")]
|
||||||
pub fn atom_feed(name: String, rockets: PlumeRocket) -> Option<Content<String>> {
|
pub async fn atom_feed(name: String, rockets: PlumeRocket) -> Option<Content<String>> {
|
||||||
let blog = Blog::find_by_fqn(&rockets, &name).ok()?;
|
let blog = Blog::find_by_fqn(&rockets, &name).await?.ok()?;
|
||||||
let conn = &*rockets.conn;
|
let conn = &*rockets.conn;
|
||||||
let entries = Post::get_recents_for_blog(&*conn, &blog, 15).ok()?;
|
let entries = Post::get_recents_for_blog(&*conn, &blog, 15).ok()?;
|
||||||
let uri = Instance::get_local()
|
let uri = Instance::get_local()
|
||||||
|
@ -162,7 +162,7 @@ pub fn new(blog: String, cl: ContentLen, rockets: PlumeRocket) -> Result<Ructe,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[get("/~/<blog>/<slug>/edit")]
|
#[get("/~/<blog>/<slug>/edit")]
|
||||||
pub fn edit(
|
pub async fn edit(
|
||||||
blog: String,
|
blog: String,
|
||||||
slug: String,
|
slug: String,
|
||||||
cl: ContentLen,
|
cl: ContentLen,
|
||||||
@ -170,7 +170,7 @@ pub fn edit(
|
|||||||
) -> Result<Ructe, ErrorPage> {
|
) -> Result<Ructe, ErrorPage> {
|
||||||
let conn = &*rockets.conn;
|
let conn = &*rockets.conn;
|
||||||
let intl = &rockets.intl.catalog;
|
let intl = &rockets.intl.catalog;
|
||||||
let b = Blog::find_by_fqn(&rockets, &blog)?;
|
let b = Blog::find_by_fqn(&rockets, &blog).await?;
|
||||||
let post = Post::find_by_slug(&*conn, &slug, b.id)?;
|
let post = Post::find_by_slug(&*conn, &slug, b.id)?;
|
||||||
let user = rockets.user.clone().unwrap();
|
let user = rockets.user.clone().unwrap();
|
||||||
|
|
||||||
@ -216,7 +216,7 @@ pub fn edit(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[post("/~/<blog>/<slug>/edit", data = "<form>")]
|
#[post("/~/<blog>/<slug>/edit", data = "<form>")]
|
||||||
pub fn update(
|
pub async fn update(
|
||||||
blog: String,
|
blog: String,
|
||||||
slug: String,
|
slug: String,
|
||||||
cl: ContentLen,
|
cl: ContentLen,
|
||||||
@ -224,7 +224,9 @@ pub fn update(
|
|||||||
rockets: PlumeRocket,
|
rockets: PlumeRocket,
|
||||||
) -> RespondOrRedirect {
|
) -> RespondOrRedirect {
|
||||||
let conn = &*rockets.conn;
|
let conn = &*rockets.conn;
|
||||||
let b = Blog::find_by_fqn(&rockets, &blog).expect("post::update: blog error");
|
let b = Blog::find_by_fqn(&rockets, &blog)
|
||||||
|
.await
|
||||||
|
.expect("post::update: blog error");
|
||||||
let mut post =
|
let mut post =
|
||||||
Post::find_by_slug(&*conn, &slug, b.id).expect("post::update: find by slug error");
|
Post::find_by_slug(&*conn, &slug, b.id).expect("post::update: find by slug error");
|
||||||
let user = rockets.user.clone().unwrap();
|
let user = rockets.user.clone().unwrap();
|
||||||
@ -302,11 +304,11 @@ pub fn update(
|
|||||||
|
|
||||||
if post.published {
|
if post.published {
|
||||||
post.update_mentions(
|
post.update_mentions(
|
||||||
&conn,
|
|
||||||
mentions
|
mentions
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter_map(|m| Mention::build_activity(&rockets, &m).ok())
|
.filter_map(|m| Mention::build_activity(&rockets, &m).await.ok())
|
||||||
.collect(),
|
.collect(),
|
||||||
|
&conn,
|
||||||
)
|
)
|
||||||
.expect("post::update: mentions error");
|
.expect("post::update: mentions error");
|
||||||
}
|
}
|
||||||
@ -321,7 +323,7 @@ pub fn update(
|
|||||||
.filter_map(|t| Tag::build_activity(t).ok())
|
.filter_map(|t| Tag::build_activity(t).ok())
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
post.update_tags(&conn, tags)
|
post.update_tags(&conn, tags)
|
||||||
.expect("post::update: tags error");
|
.expect(r#"post::update: tags error"#);
|
||||||
|
|
||||||
let hashtags = hashtags
|
let hashtags = hashtags
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@ -615,12 +617,13 @@ pub fn delete(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[get("/~/<blog_name>/<slug>/remote_interact")]
|
#[get("/~/<blog_name>/<slug>/remote_interact")]
|
||||||
pub fn remote_interact(
|
pub async fn remote_interact(
|
||||||
rockets: PlumeRocket,
|
rockets: PlumeRocket,
|
||||||
blog_name: String,
|
blog_name: String,
|
||||||
slug: String,
|
slug: String,
|
||||||
) -> Result<Ructe, ErrorPage> {
|
) -> Result<Ructe, ErrorPage> {
|
||||||
let target = Blog::find_by_fqn(&rockets, &blog_name)
|
let target = Blog::find_by_fqn(&rockets, &blog_name)
|
||||||
|
.await
|
||||||
.and_then(|blog| Post::find_by_slug(&rockets.conn, &slug, blog.id))?;
|
.and_then(|blog| Post::find_by_slug(&rockets.conn, &slug, blog.id))?;
|
||||||
Ok(render!(posts::remote_interact(
|
Ok(render!(posts::remote_interact(
|
||||||
&rockets.to_context(),
|
&rockets.to_context(),
|
||||||
@ -633,17 +636,18 @@ pub fn remote_interact(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[post("/~/<blog_name>/<slug>/remote_interact", data = "<remote>")]
|
#[post("/~/<blog_name>/<slug>/remote_interact", data = "<remote>")]
|
||||||
pub fn remote_interact_post(
|
pub async fn remote_interact_post(
|
||||||
rockets: PlumeRocket,
|
rockets: PlumeRocket,
|
||||||
blog_name: String,
|
blog_name: String,
|
||||||
slug: String,
|
slug: String,
|
||||||
remote: LenientForm<RemoteForm>,
|
remote: LenientForm<RemoteForm>,
|
||||||
) -> Result<RespondOrRedirect, ErrorPage> {
|
) -> Result<RespondOrRedirect, ErrorPage> {
|
||||||
let target = Blog::find_by_fqn(&rockets, &blog_name)
|
let target = Blog::find_by_fqn(&rockets, &blog_name)
|
||||||
|
.await
|
||||||
.and_then(|blog| Post::find_by_slug(&rockets.conn, &slug, blog.id))?;
|
.and_then(|blog| Post::find_by_slug(&rockets.conn, &slug, blog.id))?;
|
||||||
if let Some(uri) = User::fetch_remote_interact_uri(&remote.remote)
|
if let Some(uri) = User::fetch_remote_interact_uri(&remote.remote)
|
||||||
.ok()
|
.await
|
||||||
.and_then(|uri| uri.replace("{uri}", format!("{}", target.ap_url)).ok())
|
.map(|uri| uri.replace("{uri}", format!("{}", target.ap_url)).ok())
|
||||||
{
|
{
|
||||||
Ok(Redirect::to(uri).into())
|
Ok(Redirect::to(uri).into())
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user