summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDessalines <tyhou13@gmx.com>2020-04-21 16:40:03 -0400
committerDessalines <tyhou13@gmx.com>2020-04-21 16:40:03 -0400
commitd98c936295a635ece37ed527c85b3c25b7d888a0 (patch)
tree43aee3f288d82d239c49d3cce9e19576ddcbe264
parent217a9b00b8d313e5b6a7fefacae930095f35207e (diff)
Adding web::blocks to routes.
-rw-r--r--server/src/api/mod.rs2
-rw-r--r--server/src/routes/api.rs20
-rw-r--r--server/src/routes/feeds.rs16
-rw-r--r--server/src/routes/index.rs2
-rw-r--r--server/src/routes/mod.rs3
-rw-r--r--server/src/routes/nodeinfo.rs4
-rw-r--r--server/src/routes/webfinger.rs4
-rw-r--r--server/src/routes/websocket.rs3
8 files changed, 27 insertions, 27 deletions
diff --git a/server/src/api/mod.rs b/server/src/api/mod.rs
index aab00c04..3488a8c4 100644
--- a/server/src/api/mod.rs
+++ b/server/src/api/mod.rs
@@ -69,7 +69,7 @@ impl<T> Oper<T> {
}
pub trait Perform {
- type Response: serde::ser::Serialize;
+ type Response: serde::ser::Serialize + Send;
fn perform(
&self,
diff --git a/server/src/routes/api.rs b/server/src/routes/api.rs
index 74ad7239..5ff53e27 100644
--- a/server/src/routes/api.rs
+++ b/server/src/routes/api.rs
@@ -5,7 +5,6 @@ use crate::api::post::*;
use crate::api::site::*;
use crate::api::user::*;
use crate::rate_limit::RateLimit;
-use actix_web::guard;
pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimit) {
cfg.service(
@@ -140,13 +139,14 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimit) {
);
}
-fn perform<Request>(
+async fn perform<Request>(
data: Request,
db: DbPoolParam,
chat_server: ChatServerParam,
) -> Result<HttpResponse, Error>
where
Oper<Request>: Perform,
+ Request: Send + 'static,
{
let ws_info = WebsocketInfo {
chatserver: chat_server.get_ref().to_owned(),
@@ -155,9 +155,11 @@ where
let oper: Oper<Request> = Oper::new(data);
- let res = oper.perform(db.get_ref().to_owned(), Some(ws_info));
-
- Ok(HttpResponse::Ok().json(res?))
+ let res = web::block(move || oper.perform(db.get_ref().to_owned(), Some(ws_info)))
+ .await
+ .map(|json| HttpResponse::Ok().json(json))
+ .map_err(|e| ErrorBadRequest(e))?;
+ Ok(res)
}
async fn route_get<Data>(
@@ -166,10 +168,10 @@ async fn route_get<Data>(
chat_server: ChatServerParam,
) -> Result<HttpResponse, Error>
where
- Data: Serialize,
+ Data: Serialize + Send + 'static,
Oper<Data>: Perform,
{
- perform::<Data>(data.0, db, chat_server)
+ perform::<Data>(data.0, db, chat_server).await
}
async fn route_post<Data>(
@@ -178,8 +180,8 @@ async fn route_post<Data>(
chat_server: ChatServerParam,
) -> Result<HttpResponse, Error>
where
- Data: Serialize,
+ Data: Serialize + Send + 'static,
Oper<Data>: Perform,
{
- perform::<Data>(data.0, db, chat_server)
+ perform::<Data>(data.0, db, chat_server).await
}
diff --git a/server/src/routes/feeds.rs b/server/src/routes/feeds.rs
index 8eefe02a..b3675535 100644
--- a/server/src/routes/feeds.rs
+++ b/server/src/routes/feeds.rs
@@ -28,7 +28,7 @@ pub fn config(cfg: &mut web::ServiceConfig) {
async fn get_all_feed(
info: web::Query<Params>,
db: web::Data<Pool<ConnectionManager<PgConnection>>>,
-) -> Result<HttpResponse, actix_web::Error> {
+) -> Result<HttpResponse, Error> {
let res = web::block(move || {
let conn = db.get()?;
get_feed_all_data(&conn, &get_sort_type(info)?)
@@ -39,7 +39,7 @@ async fn get_all_feed(
.content_type("application/rss+xml")
.body(rss)
})
- .map_err(|_| HttpResponse::InternalServerError())?;
+ .map_err(|e| ErrorBadRequest(e))?;
Ok(res)
}
@@ -70,7 +70,7 @@ async fn get_feed(
path: web::Path<(String, String)>,
info: web::Query<Params>,
db: web::Data<Pool<ConnectionManager<PgConnection>>>,
-) -> Result<HttpResponse, actix_web::Error> {
+) -> Result<HttpResponse, Error> {
let res = web::block(move || {
let conn = db.get()?;
@@ -100,7 +100,7 @@ async fn get_feed(
.content_type("application/rss+xml")
.body(rss)
})
- .map_err(|_| HttpResponse::InternalServerError())?;
+ .map_err(|e| ErrorBadRequest(e))?;
Ok(res)
}
@@ -116,7 +116,7 @@ fn get_feed_user(
conn: &PgConnection,
sort_type: &SortType,
user_name: String,
-) -> Result<ChannelBuilder, Error> {
+) -> Result<ChannelBuilder, failure::Error> {
let site_view = SiteView::read(&conn)?;
let user = User_::find_by_username(&conn, &user_name)?;
let user_url = user.get_profile_url();
@@ -142,7 +142,7 @@ fn get_feed_community(
conn: &PgConnection,
sort_type: &SortType,
community_name: String,
-) -> Result<ChannelBuilder, Error> {
+) -> Result<ChannelBuilder, failure::Error> {
let site_view = SiteView::read(&conn)?;
let community = Community::read_from_name(&conn, community_name)?;
let community_url = community.get_url();
@@ -172,7 +172,7 @@ fn get_feed_front(
conn: &PgConnection,
sort_type: &SortType,
jwt: String,
-) -> Result<ChannelBuilder, Error> {
+) -> Result<ChannelBuilder, failure::Error> {
let site_view = SiteView::read(&conn)?;
let user_id = Claims::decode(&jwt)?.claims.id;
@@ -197,7 +197,7 @@ fn get_feed_front(
Ok(channel_builder)
}
-fn get_feed_inbox(conn: &PgConnection, jwt: String) -> Result<ChannelBuilder, Error> {
+fn get_feed_inbox(conn: &PgConnection, jwt: String) -> Result<ChannelBuilder, failure::Error> {
let site_view = SiteView::read(&conn)?;
let user_id = Claims::decode(&jwt)?.claims.id;
diff --git a/server/src/routes/index.rs b/server/src/routes/index.rs
index 9f18b64d..895af435 100644
--- a/server/src/routes/index.rs
+++ b/server/src/routes/index.rs
@@ -41,7 +41,7 @@ pub fn config(cfg: &mut web::ServiceConfig) {
.route("/password_change/{token}", web::get().to(index));
}
-async fn index() -> Result<NamedFile, actix_web::error::Error> {
+async fn index() -> Result<NamedFile, Error> {
Ok(NamedFile::open(
Settings::get().front_end_dir + "/index.html",
)?)
diff --git a/server/src/routes/mod.rs b/server/src/routes/mod.rs
index b1ea4167..37c56eba 100644
--- a/server/src/routes/mod.rs
+++ b/server/src/routes/mod.rs
@@ -5,14 +5,13 @@ use crate::websocket::{server::ChatServer, WebsocketInfo};
use crate::{get_ip, markdown_to_html, version, Settings};
use actix::prelude::*;
use actix_files::NamedFile;
-use actix_web::{body::Body, web::Query, *};
+use actix_web::{body::Body, error::ErrorBadRequest, web::Query, *};
use actix_web_actors::ws;
use chrono::{DateTime, NaiveDateTime, Utc};
use diesel::{
r2d2::{ConnectionManager, Pool},
PgConnection,
};
-use failure::Error;
use log::{error, info};
use regex::Regex;
use rss::{CategoryBuilder, ChannelBuilder, GuidBuilder, Item, ItemBuilder};
diff --git a/server/src/routes/nodeinfo.rs b/server/src/routes/nodeinfo.rs
index 829d56b1..97863271 100644
--- a/server/src/routes/nodeinfo.rs
+++ b/server/src/routes/nodeinfo.rs
@@ -18,7 +18,7 @@ async fn node_info_well_known() -> HttpResponse<Body> {
async fn node_info(
db: web::Data<Pool<ConnectionManager<PgConnection>>>,
-) -> Result<HttpResponse, actix_web::Error> {
+) -> Result<HttpResponse, Error> {
let res = web::block(move || {
let conn = db.get()?;
let site_view = match SiteView::read(&conn) {
@@ -49,7 +49,7 @@ async fn node_info(
})
.await
.map(|json| HttpResponse::Ok().json(json))
- .map_err(|_| HttpResponse::InternalServerError())?;
+ .map_err(|e| ErrorBadRequest(e))?;
Ok(res)
}
diff --git a/server/src/routes/webfinger.rs b/server/src/routes/webfinger.rs
index b35ddbf7..f39c6b67 100644
--- a/server/src/routes/webfinger.rs
+++ b/server/src/routes/webfinger.rs
@@ -32,7 +32,7 @@ lazy_static! {
async fn get_webfinger_response(
info: Query<Params>,
db: web::Data<Pool<ConnectionManager<PgConnection>>>,
-) -> Result<HttpResponse, actix_web::Error> {
+) -> Result<HttpResponse, Error> {
let res = web::block(move || {
let conn = db.get()?;
@@ -84,6 +84,6 @@ async fn get_webfinger_response(
})
.await
.map(|json| HttpResponse::Ok().json(json))
- .map_err(|_| HttpResponse::InternalServerError())?;
+ .map_err(|e| ErrorBadRequest(e))?;
Ok(res)
}
diff --git a/server/src/routes/websocket.rs b/server/src/routes/websocket.rs
index 80885945..48b7d08f 100644
--- a/server/src/routes/websocket.rs
+++ b/server/src/routes/websocket.rs
@@ -1,6 +1,5 @@
use super::*;
use crate::websocket::server::*;
-use actix_web::{Error, Result};
/// How often heartbeat pings are sent
const HEARTBEAT_INTERVAL: Duration = Duration::from_secs(5);
@@ -120,7 +119,7 @@ impl StreamHandler<Result<ws::Message, ws::ProtocolError>> for WSSession {
.then(|res, _, ctx| {
match res {
Ok(Ok(res)) => ctx.text(res),
- Ok(Err(e)) => match e {},
+ Ok(Err(_)) => {}
Err(e) => error!("{}", &e),
}
actix::fut::ready(())