assistant_daemon 0.1.0

Daemon program for providing many features.
use serde::{Deserialize, Serialize};
use async_trait::async_trait;
use anyhow::Result;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct WpSetting {
  pub res_w: Option<u32>,
  pub mkt: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SshLocalPortMapping {
  pub jump_host: String,
  pub jump_host_user: Option<String>,
  pub jump_host_port: Option<u32>,
  pub jump_host_pwd: Option<String>,
  pub target_host_user: Option<String>,
  pub target_host_pwd: Option<String>,
  pub target_host_port: Option<u32>,
  pub auto_reconnect: Option<bool>,
  pub local_port: u32,
  pub target_host: String,
  pub auto_connect: Option<bool>,
  pub same_pwd: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SshpmSetting {
  pub lpmappings: Option<Vec<SshLocalPortMapping>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct FeatureSettings {
  pub wp: WpSetting,
  pub sshpm: SshpmSetting,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Feature {
  pub status: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Features {
  pub wp: Feature,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Config {
  pub detect_lidchange: Option<bool>,
  pub features: Features,
  pub run_at_start_up: Option<bool>,
  pub settings: FeatureSettings,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ToggleFeatureRequest {
  pub feature: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ToggleFeatureResponse {
  pub status: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct UpdateConfigRequest {
  pub config: Config,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct UpdateConfigResponse {
  pub config: Config,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct GetConfigResponse {
  pub config: Config,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct GetFeaturesResponse {
  pub features: Features,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct GetFeatureStatusRequest {
  pub feature: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct GetFeatureStatusResponse {
  pub status: bool,
}
#[async_trait]
pub trait FeatureUsecase {
  async  fn toggle_feature(&self, request: ToggleFeatureRequest) -> Result<ToggleFeatureResponse>;
  async  fn update_config(&self, request: UpdateConfigRequest) -> Result<UpdateConfigResponse>;
  async  fn get_config(&self) -> Result<GetConfigResponse>;
  async  fn get_features(&self) -> Result<GetFeaturesResponse>;
  async  fn get_feature_status(&self, request: GetFeatureStatusRequest) -> Result<GetFeatureStatusResponse>;
}
#[async_trait]
pub trait SshpmUsecase {
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct GetWallpaperRequest {
  pub mkt: String,
  pub res_w: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct GetWallpaperResponse {
  pub id: String,
  pub data: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SetWallpaperRequest {
  pub id: String,
}
#[async_trait]
pub trait WallpaperUsecase {
  async  fn get_wallpaper(&self, request: GetWallpaperRequest) -> Result<GetWallpaperResponse>;
  async  fn set_wallpaper(&self, request: SetWallpaperRequest) -> Result<()>;
}