From 93275d79865abd3601f67cda3790fb05868a3150 Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Thu, 11 Jul 2019 15:02:25 +0600 Subject: [PATCH] update chat-broker example and fmt --- Cargo.toml | 2 +- basics/src/main.rs | 2 +- cookie-auth/src/main.rs | 2 +- json_error/src/main.rs | 44 +++++++++++++------------- protobuf/src/main.rs | 3 +- redis-session/src/main.rs | 2 +- simple-auth-server/src/auth_handler.rs | 2 +- template_handlebars/src/main.rs | 5 +-- websocket-chat-broker/Cargo.toml | 13 +++++--- websocket-chat-broker/src/main.rs | 33 +++++++------------ websocket-chat-broker/src/server.rs | 4 +-- 11 files changed, 51 insertions(+), 61 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f99180a2..edcf2b57 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,6 +37,6 @@ members = [ "web-cors/backend", "websocket", "websocket-chat", - #"websocket-chat-broker", + "websocket-chat-broker", "websocket-tcp-chat", ] diff --git a/basics/src/main.rs b/basics/src/main.rs index 7a4edcb1..cace43ae 100644 --- a/basics/src/main.rs +++ b/basics/src/main.rs @@ -84,7 +84,7 @@ fn main() -> io::Result<()> { App::new() // cookie session middleware .wrap(CookieSession::signed(&[0; 32]).secure(false)) - // enable logger - always register actix-web Logger middleware last + // enable logger - always register actix-web Logger middleware last .wrap(middleware::Logger::default()) // register favicon .service(favicon) diff --git a/cookie-auth/src/main.rs b/cookie-auth/src/main.rs index 8d3b3442..59634c53 100644 --- a/cookie-auth/src/main.rs +++ b/cookie-auth/src/main.rs @@ -27,7 +27,7 @@ fn main() -> std::io::Result<()> { .name("auth-example") .secure(false), )) - // enable logger - always register actix-web Logger middleware last + // enable logger - always register actix-web Logger middleware last .wrap(middleware::Logger::default()) .service(web::resource("/login").route(web::post().to(login))) .service(web::resource("/logout").to(logout)) diff --git a/json_error/src/main.rs b/json_error/src/main.rs index 64ae7856..6af1c10f 100644 --- a/json_error/src/main.rs +++ b/json_error/src/main.rs @@ -13,41 +13,41 @@ use std::io; #[derive(Debug, Serialize)] struct Error { - msg: String, - status: u16, + msg: String, + status: u16, } impl Display for Error { - fn fmt(&self, f: &mut Formatter) -> FmtResult { - write!(f, "{}", to_string_pretty(self).unwrap()) - } + fn fmt(&self, f: &mut Formatter) -> FmtResult { + write!(f, "{}", to_string_pretty(self).unwrap()) + } } impl ResponseError for Error { - // builds the actual response to send back when an error occurs - fn render_response(&self) -> HttpResponse { - let err_json = json!({ "error": self.msg }); - HttpResponse::build(StatusCode::from_u16(self.status).unwrap()).json(err_json) - } + // builds the actual response to send back when an error occurs + fn render_response(&self) -> HttpResponse { + let err_json = json!({ "error": self.msg }); + HttpResponse::build(StatusCode::from_u16(self.status).unwrap()).json(err_json) + } } fn index(_: HttpRequest) -> impl Future { - err(Error { - msg: "an example error message".to_string(), - status: 400, - }) + err(Error { + msg: "an example error message".to_string(), + status: 400, + }) } fn main() -> io::Result<()> { - let sys = System::new("json_error_example"); - let ip_address = "127.0.0.1:8000"; + let sys = System::new("json_error_example"); + let ip_address = "127.0.0.1:8000"; - HttpServer::new(|| App::new().service(resource("/").route(get().to_async(index)))) - .bind(ip_address) - .expect("Can not bind to port 8000") - .start(); + HttpServer::new(|| App::new().service(resource("/").route(get().to_async(index)))) + .bind(ip_address) + .expect("Can not bind to port 8000") + .start(); - println!("Running server on {}", ip_address); + println!("Running server on {}", ip_address); - sys.run() + sys.run() } diff --git a/protobuf/src/main.rs b/protobuf/src/main.rs index 56cbb35b..7cce23b0 100644 --- a/protobuf/src/main.rs +++ b/protobuf/src/main.rs @@ -32,7 +32,8 @@ fn main() { App::new() .wrap(middleware::Logger::default()) .service(web::resource("/").route(web::post().to(index))) - }).bind("127.0.0.1:8081") + }) + .bind("127.0.0.1:8081") .unwrap() .shutdown_timeout(1) .start(); diff --git a/redis-session/src/main.rs b/redis-session/src/main.rs index ba840b42..7dfe2132 100644 --- a/redis-session/src/main.rs +++ b/redis-session/src/main.rs @@ -28,7 +28,7 @@ fn main() -> std::io::Result<()> { App::new() // redis session middleware .wrap(RedisSession::new("127.0.0.1:6379", &[0; 32])) - // enable logger - always register actix-web Logger middleware last + // enable logger - always register actix-web Logger middleware last .wrap(middleware::Logger::default()) // register simple route, handle all methods .service(web::resource("/").to(index)) diff --git a/simple-auth-server/src/auth_handler.rs b/simple-auth-server/src/auth_handler.rs index 769bc762..22112b7b 100644 --- a/simple-auth-server/src/auth_handler.rs +++ b/simple-auth-server/src/auth_handler.rs @@ -1,6 +1,6 @@ use actix::{Handler, Message}; -use actix_web::{dev::Payload, Error, HttpRequest, FromRequest}; use actix_identity::Identity; +use actix_web::{dev::Payload, Error, FromRequest, HttpRequest}; use bcrypt::verify; use diesel::prelude::*; diff --git a/template_handlebars/src/main.rs b/template_handlebars/src/main.rs index b3003ae6..7d1f97bd 100644 --- a/template_handlebars/src/main.rs +++ b/template_handlebars/src/main.rs @@ -23,10 +23,7 @@ fn index(hb: web::Data) -> HttpResponse { } #[get("/{user}/{data}")] -fn user( - hb: web::Data, - info: web::Path<(String, String)>, -) -> HttpResponse { +fn user(hb: web::Data, info: web::Path<(String, String)>) -> HttpResponse { let data = json!({ "user": info.0, "data": info.1 diff --git a/websocket-chat-broker/Cargo.toml b/websocket-chat-broker/Cargo.toml index 3b61d476..7f1ecab8 100644 --- a/websocket-chat-broker/Cargo.toml +++ b/websocket-chat-broker/Cargo.toml @@ -2,17 +2,20 @@ name = "websocket-broker-example" version = "0.1.0" authors = ["Chris Ricketts "] -workspace = "../" +edition = "2018" +workspace = ".." [[bin]] name = "server" path = "src/main.rs" [dependencies] -rand = "*" +rand = "0.6" futures = "0.1.24" -actix = "0.7" -actix-web = "0.7" -actix-broker = "0.1.4" +actix = "0.8.2" +actix-web = "1.0" +actix-files = "0.1" +actix-web-actors = "1.0" +actix-broker = "0.2.0" log = "0.4.5" simple_logger = "0.5.0" diff --git a/websocket-chat-broker/src/main.rs b/websocket-chat-broker/src/main.rs index 4ddc3bc7..00c6ad2d 100644 --- a/websocket-chat-broker/src/main.rs +++ b/websocket-chat-broker/src/main.rs @@ -1,24 +1,18 @@ #[macro_use] -extern crate actix; -extern crate actix_broker; -extern crate actix_web; -extern crate futures; -extern crate rand; -#[macro_use] extern crate log; -extern crate simple_logger; use actix::fut; use actix::prelude::*; use actix_broker::BrokerIssue; -use actix_web::server::HttpServer; -use actix_web::{fs, ws, App, Error, HttpRequest, HttpResponse}; +use actix_files::Files; +use actix_web::{web, App, Error, HttpRequest, HttpResponse, HttpServer}; +use actix_web_actors::ws; mod server; use server::*; -fn chat_route(req: &HttpRequest<()>) -> Result { - ws::start(req, WsChatSession::default()) +fn chat_route(req: HttpRequest, stream: web::Payload) -> Result { + ws::start(WsChatSession::default(), &req, stream) } #[derive(Default)] @@ -34,7 +28,7 @@ impl WsChatSession { // First send a leave message for the current room let leave_msg = LeaveRoom(self.room.clone(), self.id); // issue_sync comes from having the `BrokerIssue` trait in scope. - self.issue_sync(leave_msg, ctx); + self.issue_system_sync(leave_msg, ctx); // Then send a join message for the new room let join_msg = JoinRoom( room_name.to_owned(), @@ -79,7 +73,7 @@ impl WsChatSession { ); let msg = SendMessage(self.room.clone(), self.id, content); // issue_async comes from having the `BrokerIssue` trait in scope. - self.issue_async(msg); + self.issue_system_async(msg); } } @@ -147,24 +141,19 @@ impl StreamHandler for WsChatSession { } } -fn main() { +fn main() -> std::io::Result<()> { let sys = actix::System::new("websocket-broker-example"); simple_logger::init_with_level(log::Level::Info).unwrap(); HttpServer::new(move || { App::new() - .resource("/ws/", |r| r.route().f(chat_route)) - .handler( - "/", - fs::StaticFiles::new("./static/") - .unwrap() - .index_file("index.html"), - ) + .service(web::resource("/ws/").to(chat_route)) + .service(Files::new("/", "./static/").index_file("index.html")) }) .bind("127.0.0.1:8080") .unwrap() .start(); info!("Started http server: 127.0.0.1:8080"); - let _ = sys.run(); + sys.run() } diff --git a/websocket-chat-broker/src/server.rs b/websocket-chat-broker/src/server.rs index 87a6052b..198b6c85 100644 --- a/websocket-chat-broker/src/server.rs +++ b/websocket-chat-broker/src/server.rs @@ -81,8 +81,8 @@ impl Actor for WsChatServer { type Context = Context; fn started(&mut self, ctx: &mut Self::Context) { - self.subscribe_async::(ctx); - self.subscribe_async::(ctx); + self.subscribe_system_async::(ctx); + self.subscribe_system_async::(ctx); } }