aboutsummaryrefslogtreecommitdiff
path: root/server/registry/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/registry/src')
-rw-r--r--server/registry/src/list.rs9
-rw-r--r--server/registry/src/main.rs20
-rw-r--r--server/registry/src/register.rs13
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,