From 46f47b74dfec7b0a5ea88937830fec885bb31c0f Mon Sep 17 00:00:00 2001 From: findolor Date: Wed, 18 Dec 2024 19:07:37 +0300 Subject: [PATCH 1/4] add new trait for yaml structs --- crates/settings/src/yaml/mod.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/settings/src/yaml/mod.rs b/crates/settings/src/yaml/mod.rs index 0fb9d9f22..144a06a70 100644 --- a/crates/settings/src/yaml/mod.rs +++ b/crates/settings/src/yaml/mod.rs @@ -1,3 +1,4 @@ +pub mod dotrain; pub mod orderbook; use crate::{ @@ -7,6 +8,7 @@ use crate::{ use std::collections::HashMap; use std::sync::{Arc, RwLock}; use std::sync::{PoisonError, RwLockReadGuard, RwLockWriteGuard}; +use strict_yaml_rust::StrictYamlEmitter; use strict_yaml_rust::{ strict_yaml::{Array, Hash}, EmitError, ScanError, StrictYaml, StrictYamlLoader, @@ -14,6 +16,18 @@ use strict_yaml_rust::{ use thiserror::Error; use url::ParseError as UrlParseError; +pub trait YamlParsable: Sized { + fn new(source: String, validate: bool) -> Result; + + fn get_yaml_string(document: Arc>) -> Result { + let document = document.read().unwrap(); + let mut out_str = String::new(); + let mut emitter = StrictYamlEmitter::new(&mut out_str); + emitter.dump(&document)?; + Ok(out_str) + } +} + pub trait YamlParsableHash: Sized + Clone { fn parse_all_from_yaml( document: Arc>, From 77c48ff656c7057ecbb8f0a5a0590798052c519b Mon Sep 17 00:00:00 2001 From: findolor Date: Wed, 18 Dec 2024 19:07:46 +0300 Subject: [PATCH 2/4] add dotrain yaml --- crates/settings/src/yaml/dotrain.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 crates/settings/src/yaml/dotrain.rs diff --git a/crates/settings/src/yaml/dotrain.rs b/crates/settings/src/yaml/dotrain.rs new file mode 100644 index 000000000..8e14e37f2 --- /dev/null +++ b/crates/settings/src/yaml/dotrain.rs @@ -0,0 +1,24 @@ +use super::*; +use std::sync::{Arc, RwLock}; + +#[derive(Debug, Clone)] +pub struct DotrainYaml { + pub document: Arc>, +} + +impl YamlParsable for DotrainYaml { + fn new(source: String, validate: bool) -> Result { + let docs = StrictYamlLoader::load_from_str(&source)?; + if docs.is_empty() { + return Err(YamlError::EmptyFile); + } + let doc = docs[0].clone(); + let document = Arc::new(RwLock::new(doc)); + + if validate {} + + Ok(DotrainYaml { document }) + } +} + +impl DotrainYaml {} From a2d1819ca2e1e48a3839d49f2b9cc482d26d714c Mon Sep 17 00:00:00 2001 From: findolor Date: Wed, 18 Dec 2024 19:07:52 +0300 Subject: [PATCH 3/4] refactor orderbook yaml --- crates/settings/src/yaml/orderbook.rs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/crates/settings/src/yaml/orderbook.rs b/crates/settings/src/yaml/orderbook.rs index a5539e1ad..da2872dd5 100644 --- a/crates/settings/src/yaml/orderbook.rs +++ b/crates/settings/src/yaml/orderbook.rs @@ -4,15 +4,14 @@ use crate::{ Orderbook, Subgraph, Token, }; use std::sync::{Arc, RwLock}; -use strict_yaml_rust::StrictYamlEmitter; #[derive(Debug, Clone)] pub struct OrderbookYaml { pub document: Arc>, } -impl OrderbookYaml { - pub fn new(source: String, validate: bool) -> Result { +impl YamlParsable for OrderbookYaml { + fn new(source: String, validate: bool) -> Result { let docs = StrictYamlLoader::load_from_str(&source)?; if docs.is_empty() { return Err(YamlError::EmptyFile); @@ -25,15 +24,9 @@ impl OrderbookYaml { } Ok(OrderbookYaml { document }) } +} - pub fn get_yaml_string(&self) -> Result { - let document = self.document.read().unwrap(); - let mut out_str = String::new(); - let mut emitter = StrictYamlEmitter::new(&mut out_str); - emitter.dump(&document)?; - Ok(out_str) - } - +impl OrderbookYaml { pub fn get_network_keys(&self) -> Result, YamlError> { let networks = Network::parse_all_from_yaml(self.document.clone())?; Ok(networks.keys().cloned().collect()) From b22c26297c10a74a2c7ab805a60c3a9e9b2cd235 Mon Sep 17 00:00:00 2001 From: findolor Date: Thu, 19 Dec 2024 09:23:44 +0300 Subject: [PATCH 4/4] remove validate block --- crates/settings/src/yaml/dotrain.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/crates/settings/src/yaml/dotrain.rs b/crates/settings/src/yaml/dotrain.rs index 8e14e37f2..d09c1f2ee 100644 --- a/crates/settings/src/yaml/dotrain.rs +++ b/crates/settings/src/yaml/dotrain.rs @@ -7,7 +7,7 @@ pub struct DotrainYaml { } impl YamlParsable for DotrainYaml { - fn new(source: String, validate: bool) -> Result { + fn new(source: String, _validate: bool) -> Result { let docs = StrictYamlLoader::load_from_str(&source)?; if docs.is_empty() { return Err(YamlError::EmptyFile); @@ -15,8 +15,6 @@ impl YamlParsable for DotrainYaml { let doc = docs[0].clone(); let document = Arc::new(RwLock::new(doc)); - if validate {} - Ok(DotrainYaml { document }) } }