forked from lavender/watch-party
		
	Add an emoji list endpoint
This commit is contained in:
		
							parent
							
								
									c0d02a9990
								
							
						
					
					
						commit
						1f78f03b68
					
				
					 2 changed files with 21 additions and 2 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")); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue