From cfc2228491afd5d7fd980dc12bffd250ac8c3101 Mon Sep 17 00:00:00 2001 From: _ <> Date: Tue, 27 Apr 2021 14:55:08 -0500 Subject: [PATCH] add relay builder --- crates/ptth_relay/src/config.rs | 1 + crates/ptth_relay/src/relay_state.rs | 37 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/crates/ptth_relay/src/config.rs b/crates/ptth_relay/src/config.rs index 4e204f6..74ab74e 100644 --- a/crates/ptth_relay/src/config.rs +++ b/crates/ptth_relay/src/config.rs @@ -88,6 +88,7 @@ pub mod file { /// Config fields as they are used at runtime +#[derive (Default)] pub struct Config { pub iso: file::Isomorphic, diff --git a/crates/ptth_relay/src/relay_state.rs b/crates/ptth_relay/src/relay_state.rs index b1d1124..d343272 100644 --- a/crates/ptth_relay/src/relay_state.rs +++ b/crates/ptth_relay/src/relay_state.rs @@ -184,4 +184,41 @@ impl Relay { .map (|(k, _)| (*k).clone ()) .collect () } + + pub fn build () -> Builder { + Builder::default () + } +} + +#[derive (Default)] +pub struct Builder { + config: Config, +} + +impl Builder { + pub fn build (self) -> Result { + Relay::try_from (self.config) + } + + pub fn enable_scraper_api (&mut self, b: bool) -> &mut Self { + self.config.iso.enable_scraper_api = b; + self + } + + pub fn port (&mut self, port: u16) -> &mut Self { + self.config.port = Some (port); + self + } + + pub fn scraper_key (&mut self, key: crate::key_validity::ScraperKey ) + -> &mut Self + { + self.config.scraper_keys.insert (key.hash.encode_base64 (), key); + self + } + + pub fn server (&mut self, server: crate::config::file::Server) -> &mut Self { + self.config.servers.insert (server.name.clone (), server); + self + } }