forked from lavender/watch-party
		
	Merge branch 'main' of https://git.lavender.software/charlotte/watch-party
This commit is contained in:
		
						commit
						362c990d22
					
				
					 3 changed files with 23 additions and 4 deletions
				
			
		|  | @ -10,6 +10,6 @@ once_cell = "1.8.0" | ||||||
| serde = { version = "1.0.130", features = ["derive"] } | serde = { version = "1.0.130", features = ["derive"] } | ||||||
| serde_json = "1.0.68" | serde_json = "1.0.68" | ||||||
| tokio = { version = "1.12.0", features = ["full"] } | tokio = { version = "1.12.0", features = ["full"] } | ||||||
| tokio-stream = "0.1.7" | tokio-stream = { version = "0.1.7", features = ["fs"] } | ||||||
| uuid = { version = "0.8.2", features = ["v4"] } | uuid = { version = "0.8.2", features = ["v4"] } | ||||||
| warp = "0.3.1" | warp = "0.3.1" | ||||||
|  |  | ||||||
							
								
								
									
										21
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								src/main.rs
									
									
									
									
									
								
							|  | @ -6,9 +6,9 @@ use warb::{hyper::StatusCode, Filter, Reply}; | ||||||
| use warp as warb; // i think it's funny
 | use warp as warb; // i think it's funny
 | ||||||
| 
 | 
 | ||||||
| mod events; | mod events; | ||||||
|  | mod utils; | ||||||
| mod viewer_connection; | mod viewer_connection; | ||||||
| mod watch_session; | mod watch_session; | ||||||
| mod utils; |  | ||||||
| 
 | 
 | ||||||
| use serde::Deserialize; | use serde::Deserialize; | ||||||
| 
 | 
 | ||||||
|  | @ -30,6 +30,22 @@ struct SubscribeQuery { | ||||||
|     colour: String, |     colour: String, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | async fn get_emoji_list() -> Result<impl warb::Reply, warb::Rejection> { | ||||||
|  |     use tokio_stream::{wrappers::ReadDirStream, StreamExt}; | ||||||
|  | 
 | ||||||
|  |     let dir = tokio::fs::read_dir("frontend/emojis") | ||||||
|  |         .await | ||||||
|  |         .expect("Couldn't read emojis directory!"); | ||||||
|  | 
 | ||||||
|  |     let files = ReadDirStream::new(dir) | ||||||
|  |         .filter_map(|r| r.ok()) | ||||||
|  |         .map(|e| e.file_name().to_string_lossy().to_string()) | ||||||
|  |         .collect::<Vec<_>>() | ||||||
|  |         .await; | ||||||
|  | 
 | ||||||
|  |     Ok(warb::reply::json(&files)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| #[tokio::main] | #[tokio::main] | ||||||
| async fn main() { | async fn main() { | ||||||
|     let start_session_route = warb::path!("start_session") |     let start_session_route = warb::path!("start_session") | ||||||
|  | @ -46,6 +62,8 @@ async fn main() { | ||||||
|             warb::reply::json(&json!({ "id": session_uuid.to_string(), "session": session_view })) |             warb::reply::json(&json!({ "id": session_uuid.to_string(), "session": session_view })) | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|  |     let get_emoji_route = warb::path!("emojis").and_then(get_emoji_list); | ||||||
|  | 
 | ||||||
|     enum RequestedSession { |     enum RequestedSession { | ||||||
|         Session(Uuid, WatchSession), |         Session(Uuid, WatchSession), | ||||||
|         Error(warb::reply::WithStatus<warb::reply::Json>), |         Error(warb::reply::WithStatus<warb::reply::Json>), | ||||||
|  | @ -96,6 +114,7 @@ async fn main() { | ||||||
|     let routes = start_session_route |     let routes = start_session_route | ||||||
|         .or(get_status_route) |         .or(get_status_route) | ||||||
|         .or(ws_subscribe_route) |         .or(ws_subscribe_route) | ||||||
|  |         .or(get_emoji_route) | ||||||
|         .or(warb::path::end().and(warb::fs::file("frontend/index.html"))) |         .or(warb::path::end().and(warb::fs::file("frontend/index.html"))) | ||||||
|         .or(warb::fs::dir("frontend")); |         .or(warb::fs::dir("frontend")); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ pub async fn ws_subscribe(session_uuid: Uuid, nickname: String, colour: String, | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     let mut colour = colour; |     let mut colour = colour; | ||||||
|     if !colour.len() == 6 || !colour.chars().all(|x| x.is_ascii_hexdigit()) { |     if colour.len() != 6 || !colour.chars().all(|x| x.is_ascii_hexdigit()) { | ||||||
|         colour = String::from("7ed0ff"); |         colour = String::from("7ed0ff"); | ||||||
|     } |     } | ||||||
|     let nickname = truncate_str(&nickname, 50).to_string(); |     let nickname = truncate_str(&nickname, 50).to_string(); | ||||||
|  | @ -92,7 +92,7 @@ pub async fn ws_subscribe(session_uuid: Uuid, nickname: String, colour: String, | ||||||
|         let event: WatchEventData = match event { |         let event: WatchEventData = match event { | ||||||
|             WatchEventData::SetTime { from: _, to } => WatchEventData::SetTime { |             WatchEventData::SetTime { from: _, to } => WatchEventData::SetTime { | ||||||
|                 from: Some(session.get_time_ms()), |                 from: Some(session.get_time_ms()), | ||||||
|                 to: to, |                 to, | ||||||
|             }, |             }, | ||||||
|             _ => event, |             _ => event, | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue