]> Untitled Git - lemmy.git/commitdiff
Make various functions async
authorFelix <me@nutomic.com>
Sat, 11 Jan 2020 12:30:45 +0000 (13:30 +0100)
committerFelix <me@nutomic.com>
Sat, 11 Jan 2020 12:50:07 +0000 (13:50 +0100)
server/Cargo.lock
server/Cargo.toml
server/src/apub/community.rs
server/src/apub/user.rs
server/src/main.rs
server/src/routes/feeds.rs
server/src/routes/nodeinfo.rs
server/src/routes/webfinger.rs

index ea5d172a43a62d612fdadf94171c75f662cf39d3..16a51fab83ae37401f954559339cd81aeaac7c9e 100644 (file)
@@ -1298,6 +1298,7 @@ dependencies = [
  "activitypub 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "actix 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "actix-files 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "actix-rt 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "actix-web 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "actix-web-actors 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bcrypt 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
index a4d068ef15c9ecda7190e52e1bb72daddb9291fd..5d00d6ee52e1cec933a589f09a495b69536e597d 100644 (file)
@@ -18,6 +18,7 @@ actix = "0.9.0"
 actix-web = "2.0.0"
 actix-files = "0.2.1"
 actix-web-actors = "2.0.0"
+actix-rt = "1.0.0"
 env_logger = "0.7.1"
 rand = "0.7.0"
 strum = "0.17.1"
index 504e17907f36e0bacd1cdf2f087279ff27bc19a6..fac6088e46418eabdf88627e05a34467decc9413 100644 (file)
@@ -84,7 +84,7 @@ pub struct CommunityQuery {
   community_name: String,
 }
 
-pub fn get_apub_community(info: Path<CommunityQuery>) -> HttpResponse<Body> {
+pub async fn get_apub_community(info: Path<CommunityQuery>) -> HttpResponse<Body> {
   let connection = establish_connection();
 
   if let Ok(community) = Community::read_from_name(&connection, info.community_name.to_owned()) {
@@ -96,7 +96,7 @@ pub fn get_apub_community(info: Path<CommunityQuery>) -> HttpResponse<Body> {
   }
 }
 
-pub fn get_apub_community_followers(info: Path<CommunityQuery>) -> HttpResponse<Body> {
+pub async fn get_apub_community_followers(info: Path<CommunityQuery>) -> HttpResponse<Body> {
   let connection = establish_connection();
 
   if let Ok(community) = Community::read_from_name(&connection, info.community_name.to_owned()) {
index 9de2c36c39aac945e47e29d5d8a804b7e0a4ae66..cf9a9797cf8277787d53f2fd7e63678e371b43d0 100644 (file)
@@ -61,7 +61,7 @@ pub struct UserQuery {
   user_name: String,
 }
 
-pub fn get_apub_user(info: Path<UserQuery>) -> HttpResponse<Body> {
+pub async fn get_apub_user(info: Path<UserQuery>) -> HttpResponse<Body> {
   let connection = establish_connection();
 
   if let Ok(user) = User_::find_by_email_or_username(&connection, &info.user_name) {
index 8ee9f4ef8cb0ff8f0a732dcdfa7e2fddca739c11..763f540fbca5e67d19d7ace1c924761138ffe47f 100644 (file)
@@ -6,12 +6,13 @@ use actix_web::*;
 use lemmy_server::db::establish_connection;
 use lemmy_server::routes::{federation, feeds, index, nodeinfo, webfinger, websocket};
 use lemmy_server::settings::Settings;
+use std::io;
 
 embed_migrations!();
 
-fn main() {
+#[actix_rt::main]
+async fn main() -> io::Result<()> {
   env_logger::init();
-  let sys = actix::System::new("lemmy");
 
   // Run the migrations from code
   let conn = establish_connection();
@@ -19,6 +20,11 @@ fn main() {
 
   let settings = Settings::get();
 
+  println!(
+    "Starting http server at {}:{}",
+    settings.bind, settings.port
+  );
+
   // Create Http server with websocket support
   HttpServer::new(move || {
     App::new()
@@ -37,10 +43,7 @@ fn main() {
         settings.front_end_dir.to_owned() + "/documentation",
       ))
   })
-  .bind((settings.bind, settings.port))
-  .unwrap()
-  .run();
-
-  println!("Started http server at {}:{}", settings.bind, settings.port);
-  let _ = sys.run();
+  .bind((settings.bind, settings.port))?
+  .run()
+  .await
 }
index 0b2ccac19e5639e6d9eef494b795572fe2be003f..ae1631e2d7780dabfc0f23adad8375f1dfc923da 100644 (file)
@@ -37,7 +37,7 @@ pub fn config(cfg: &mut web::ServiceConfig) {
     .route("/feeds/all.xml", web::get().to(feeds::get_all_feed));
 }
 
-fn get_all_feed(info: web::Query<Params>) -> HttpResponse<Body> {
+async fn get_all_feed(info: web::Query<Params>) -> HttpResponse<Body> {
   let sort_type = match get_sort_type(info) {
     Ok(sort_type) => sort_type,
     Err(_) => return HttpResponse::BadRequest().finish(),
@@ -53,7 +53,10 @@ fn get_all_feed(info: web::Query<Params>) -> HttpResponse<Body> {
   }
 }
 
-fn get_feed(path: web::Path<(String, String)>, info: web::Query<Params>) -> HttpResponse<Body> {
+async fn get_feed(
+  path: web::Path<(String, String)>,
+  info: web::Query<Params>,
+) -> HttpResponse<Body> {
   let sort_type = match get_sort_type(info) {
     Ok(sort_type) => sort_type,
     Err(_) => return HttpResponse::BadRequest().finish(),
index 246596083385675f1094112186e181d9ab873ce5..2b7135fba462b787b20e1b664bc683fc1c3b55d9 100644 (file)
@@ -13,7 +13,7 @@ pub fn config(cfg: &mut web::ServiceConfig) {
     .route("/.well-known/nodeinfo", web::get().to(node_info_well_known));
 }
 
-pub fn node_info_well_known() -> HttpResponse<Body> {
+async fn node_info_well_known() -> HttpResponse<Body> {
   let json = json!({
     "links": {
       "rel": "http://nodeinfo.diaspora.software/ns/schema/2.0",
@@ -26,7 +26,7 @@ pub fn node_info_well_known() -> HttpResponse<Body> {
     .body(json.to_string())
 }
 
-fn node_info() -> HttpResponse<Body> {
+async fn node_info() -> HttpResponse<Body> {
   let conn = establish_connection();
   let site_view = match SiteView::read(&conn) {
     Ok(site_view) => site_view,
index f013f3efef5a65058d12ae458f3aeb7191468c0c..c538f5b1d19329740fad9b70df3ea96e3904bd49 100644 (file)
@@ -37,7 +37,7 @@ lazy_static! {
 ///
 /// You can also view the webfinger response that Mastodon sends:
 /// https://radical.town/.well-known/webfinger?resource=acct:felix@radical.town
-fn get_webfinger_response(info: Query<Params>) -> HttpResponse<Body> {
+async fn get_webfinger_response(info: Query<Params>) -> HttpResponse<Body> {
   let regex_parsed = WEBFINGER_COMMUNITY_REGEX
     .captures(&info.resource)
     .map(|c| c.get(1));