diff options
Diffstat (limited to 'server/registry/src')
-rw-r--r-- | server/registry/src/list.rs | 9 | ||||
-rw-r--r-- | server/registry/src/main.rs | 20 | ||||
-rw-r--r-- | server/registry/src/register.rs | 13 |
3 files changed, 12 insertions, 30 deletions
diff --git a/server/registry/src/list.rs b/server/registry/src/list.rs index eb1ddfbf..67f2ec2a 100644 --- a/server/registry/src/list.rs +++ b/server/registry/src/list.rs @@ -1,5 +1,6 @@ -use crate::{PublicEntry, Registry}; +use crate::Registry; use anyhow::Result; +use hurrycurry_protocol::registry::Entry; use rocket::{ get, http::MediaType, @@ -22,15 +23,15 @@ pub(super) async fn r_list( } } -pub(super) fn generate_json_list(entries: &[PublicEntry]) -> Result<Arc<str>> { +pub(super) fn generate_json_list(entries: &[Entry]) -> Result<Arc<str>> { Ok(serde_json::to_string(&entries)?.into()) } -pub(super) fn generate_html_list(entries: &[PublicEntry]) -> Result<Arc<str>> { +pub(super) fn generate_html_list(entries: &[Entry]) -> Result<Arc<str>> { Ok(ListPage { entries }.to_string().into()) } markup::define!( - ListPage<'a>(entries: &'a [PublicEntry]) { + ListPage<'a>(entries: &'a [Entry]) { @markup::doctype() html { head { diff --git a/server/registry/src/main.rs b/server/registry/src/main.rs index e979289f..9ba06e49 100644 --- a/server/registry/src/main.rs +++ b/server/registry/src/main.rs @@ -1,10 +1,11 @@ pub mod list; pub mod register; +use hurrycurry_protocol::registry::Entry; use list::{generate_html_list, generate_json_list, r_list}; use log::{error, info}; use register::r_register; -use rocket::{get, routes, serde::Serialize, Config}; +use rocket::{get, routes, Config}; use std::{ cmp::Reverse, collections::HashMap, @@ -48,7 +49,7 @@ fn main() { struct Registry { json_response: Arc<str>, html_response: Arc<str>, - servers: HashMap<u128, Entry>, + servers: HashMap<u128, InternalEntry>, } impl Registry { @@ -72,7 +73,7 @@ impl Registry { let mut list = self .servers .values() - .map(|e| PublicEntry { + .map(|e| Entry { name: e.name.clone(), address: e.address.keys().cloned().collect(), last_game: e.last_game, @@ -99,7 +100,7 @@ impl Registry { } #[derive(Debug)] -struct Entry { +struct InternalEntry { name: String, address: HashMap<String, Instant>, players_online: usize, @@ -107,16 +108,7 @@ struct Entry { version: (usize, usize), } -#[derive(Debug, Serialize)] -pub struct PublicEntry { - name: String, - address: Vec<String>, - players_online: usize, - last_game: i64, - version: (usize, usize), -} - -impl Default for Entry { +impl Default for InternalEntry { fn default() -> Self { Self { address: HashMap::new(), diff --git a/server/registry/src/register.rs b/server/registry/src/register.rs index 173361ef..fb1c668a 100644 --- a/server/registry/src/register.rs +++ b/server/registry/src/register.rs @@ -1,21 +1,10 @@ use crate::Registry; +use hurrycurry_protocol::registry::Submission; use log::{debug, info}; use rocket::{http::hyper::Uri, post, serde::json::Json, State}; -use serde::Deserialize; use std::{net::IpAddr, str::FromStr, sync::Arc, time::Instant}; use tokio::{net::lookup_host, sync::RwLock}; -#[derive(Debug, Deserialize)] -pub(super) struct Submission { - secret: u128, - name: String, - players: usize, - last_game: i64, - version: (usize, usize), - - uri: String, -} - #[post("/v1/register", data = "<submission>")] pub(super) async fn r_register<'a>( client_addr: IpAddr, |