From 44f56e25da2ffab8faf34f44c0b9e4d4c434e699 Mon Sep 17 00:00:00 2001 From: Colin Reeder Date: Sat, 8 Aug 2020 08:47:21 -0600 Subject: Use new vote APIs --- src/routes/mod.rs | 8 ++++---- src/routes/posts.rs | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/routes/mod.rs b/src/routes/mod.rs index 0c8969f..e3d6c76 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -461,8 +461,8 @@ async fn handler_comment_like( res_to_error( ctx.http_client .request(for_client( - hyper::Request::post(format!( - "{}/api/unstable/comments/{}/like", + hyper::Request::put(format!( + "{}/api/unstable/comments/{}/your_vote", ctx.backend_host, comment_id )) .body(Default::default())?, @@ -504,8 +504,8 @@ async fn handler_comment_unlike( res_to_error( ctx.http_client .request(for_client( - hyper::Request::post(format!( - "{}/api/unstable/comments/{}/unlike", + hyper::Request::delete(format!( + "{}/api/unstable/comments/{}/your_vote", ctx.backend_host, comment_id )) .body(Default::default())?, diff --git a/src/routes/posts.rs b/src/routes/posts.rs index 7bb85bf..9223f13 100644 --- a/src/routes/posts.rs +++ b/src/routes/posts.rs @@ -267,11 +267,11 @@ async fn handler_post_like( res_to_error( ctx.http_client .request(for_client( - hyper::Request::post(format!( - "{}/api/unstable/posts/{}/like", + hyper::Request::put(format!( + "{}/api/unstable/posts/{}/your_vote", ctx.backend_host, post_id )) - .body(Default::default())?, + .body("{}".into())?, req.headers(), &cookies, )?) @@ -302,7 +302,7 @@ async fn page_post_likes( ctx.http_client .request(for_client( hyper::Request::get(format!( - "{}/api/unstable/posts/{}/likes", + "{}/api/unstable/posts/{}/votes", ctx.backend_host, post_id, )) .body(Default::default())?, @@ -366,8 +366,8 @@ async fn handler_post_unlike( res_to_error( ctx.http_client .request(for_client( - hyper::Request::post(format!( - "{}/api/unstable/posts/{}/unlike", + hyper::Request::delete(format!( + "{}/api/unstable/posts/{}/your_vote", ctx.backend_host, post_id )) .body(Default::default())?, -- cgit v1.2.3 From 50e529d60bf6f60a41eaa51d9005abbe9da80adf Mon Sep 17 00:00:00 2001 From: Colin Reeder Date: Sat, 8 Aug 2020 09:45:25 -0600 Subject: Switch to "~me" for users routes --- src/routes/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/routes/mod.rs b/src/routes/mod.rs index e3d6c76..aa8678e 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -913,7 +913,7 @@ async fn page_notifications( ctx.http_client .request(for_client( hyper::Request::get(format!( - "{}/api/unstable/users/me/notifications", + "{}/api/unstable/users/~me/notifications", ctx.backend_host )) .body(Default::default())?, @@ -1278,7 +1278,7 @@ async fn handler_user_edit_submit( res_to_error( ctx.http_client .request(for_client( - hyper::Request::patch(format!("{}/api/unstable/users/me", ctx.backend_host)) + hyper::Request::patch(format!("{}/api/unstable/users/~me", ctx.backend_host)) .body(serde_json::to_vec(&body)?.into())?, &req_parts.headers, &cookies, @@ -1394,7 +1394,7 @@ async fn page_home( ctx.http_client .request(for_client( hyper::Request::get(format!( - "{}/api/unstable/users/me/following:posts", + "{}/api/unstable/users/~me/following:posts", ctx.backend_host )) .body(Default::default())?, -- cgit v1.2.3 From 7ca10ced7b48ecca3ecd645f7b6512e43d71dc81 Mon Sep 17 00:00:00 2001 From: Colin Reeder Date: Sat, 8 Aug 2020 09:59:14 -0600 Subject: Handle different actor types for lookup --- src/routes/mod.rs | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/routes/mod.rs b/src/routes/mod.rs index aa8678e..72268d0 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -720,9 +720,20 @@ async fn page_lookup( let query: LookupQuery<'_> = serde_urlencoded::from_str(req.uri().query().unwrap_or(""))?; let query = query.query; + #[derive(Deserialize)] + #[serde(rename_all = "snake_case")] + enum ActorType { + Community, + User, + #[serde(other)] + Unknown, + } + #[derive(Deserialize)] struct LookupResult { id: i64, + #[serde(rename = "type")] + kind: ActorType, } let api_res: Option, String>> = if let Some(query) = &query { @@ -755,13 +766,22 @@ async fn page_lookup( }; match api_res { - Some(Ok(items)) if !items.is_empty() => Ok(hyper::Response::builder() - .status(hyper::StatusCode::FOUND) - .header( - hyper::header::LOCATION, - format!("/communities/{}", items[0].id), - ) - .body("Redirecting…".into())?), + Some(Ok(items)) if !items.is_empty() => { + let item = &items[0]; + let dest = match item.kind { + ActorType::Community => format!("/communities/{}", item.id), + ActorType::User => format!("/users/{}", item.id), + ActorType::Unknown => { + return Err(crate::Error::InternalStr( + "Unknown actor type received from lookup".to_owned(), + )); + } + }; + Ok(hyper::Response::builder() + .status(hyper::StatusCode::FOUND) + .header(hyper::header::LOCATION, dest) + .body("Redirecting…".into())?) + } api_res => { let title = lang.tr("lookup_title", None); Ok(html_response(render::html! { -- cgit v1.2.3