| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- use crate::serial::{deserialize, serialize, Decodable, Encodable};
- use crate::util::join_config_path;
- use crate::Result;
- use std::{fs::OpenOptions, io::prelude::*, path::PathBuf};
- pub trait ClientCliConfig: Encodable + Decodable + Default {
- fn load(path: PathBuf) -> Result<Self> {
- let path = join_config_path(&path)?;
- let mut file = OpenOptions::new()
- .read(true)
- .write(true)
- .create(true)
- .open(path)?;
- let mut buffer: Vec<u8> = vec![];
- file.read_to_end(&mut buffer)?;
- if !buffer.is_empty() {
- let config: Self = deserialize(&buffer)?;
- Ok(config)
- } else {
- Ok(Self::default())
- }
- }
- fn save(&self, path: PathBuf) -> Result<()> {
- let path = join_config_path(&path)?;
- let mut file = OpenOptions::new().write(true).create(true).open(&path)?;
- let serialized = serialize(self);
- file.write_all(&serialized)?;
- Ok(())
- }
- }
- impl ClientCliConfig for DarkfiCliConfig {}
- impl ClientCliConfig for DarkfidCliConfig {}
- pub struct DarkfiCliConfig {
- pub rpc_url: String,
- pub log_path: String,
- }
- pub struct DarkfidCliConfig {
- pub connect_url: String,
- pub subscriber_url: String,
- pub rpc_url: String,
- pub database_path: String,
- pub log_path: String,
- }
- impl Default for DarkfiCliConfig {
- fn default() -> Self {
- let rpc_url = String::from("http://127.0.0.1:8000");
- let log_path = String::from("/tmp/darkfi_cli.log");
- Self {
- rpc_url,
- log_path,
- }
- }
- }
- impl Encodable for DarkfidCliConfig {
- fn encode<S: std::io::Write>(&self, mut s: S) -> Result<usize> {
- let mut len = 0;
- len += self.connect_url.encode(&mut s)?;
- len += self.subscriber_url.encode(&mut s)?;
- len += self.rpc_url.encode(&mut s)?;
- len += self.database_path.encode(&mut s)?;
- len += self.log_path.encode(&mut s)?;
- Ok(len)
- }
- }
- impl Decodable for DarkfidCliConfig {
- fn decode<D: std::io::Read>(mut d: D) -> Result<Self> {
- Ok(Self {
- connect_url: Decodable::decode(&mut d)?,
- subscriber_url: Decodable::decode(&mut d)?,
- rpc_url: Decodable::decode(&mut d)?,
- database_path: Decodable::decode(&mut d)?,
- log_path: Decodable::decode(&mut d)?,
- })
- }
- }
- impl Default for DarkfidCliConfig {
- fn default() -> Self {
- let connect_url = String::from("127.0.0.1:3333");
- let subscriber_url = String::from("127.0.0.1:4444");
- let rpc_url = String::from("127.0.0.1:8000");
- let database_path = String::from("database_client.db");
- let database_path = join_config_path(&PathBuf::from(database_path))
- .expect("error during join database_path to config path");
- let database_path = String::from(
- database_path
- .to_str()
- .expect("error convert Path to String"),
- );
- let log_path = String::from("/tmp/darkfid_service_daemon.log");
- Self {
- connect_url,
- subscriber_url,
- rpc_url,
- database_path,
- log_path,
- }
- }
- }
- impl Encodable for DarkfiCliConfig {
- fn encode<S: std::io::Write>(&self, mut s: S) -> Result<usize> {
- let mut len = 0;
- len += self.rpc_url.encode(&mut s)?;
- len += self.log_path.encode(&mut s)?;
- Ok(len)
- }
- }
- impl Decodable for DarkfiCliConfig {
- fn decode<D: std::io::Read>(mut d: D) -> Result<Self> {
- Ok(Self {
- rpc_url: Decodable::decode(&mut d)?,
- log_path: Decodable::decode(&mut d)?,
- })
- }
- }
|