use rs_plugin_common_interfaces::PluginCredential;
use serde::{Deserialize, Serialize};
use strum_macros::EnumString;
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
#[serde(rename_all = "snake_case")]
pub struct RsRequest {
pub url: String,
pub mime: Option<String>,
pub size: Option<u64>,
pub filename: Option<String>,
#[serde(default)]
pub status: RsRequestStatus,
pub headers: Option<Vec<(String, String)>>,
pub files: Option<Vec<RsRequestFiles>>,
pub selected_file: Option<String>
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display,EnumString, Default)]
#[serde(rename_all = "camelCase")]
#[strum(serialize_all = "camelCase")]
pub enum RsRequestStatus {
#[default]
Unprocessed,
RequireAdd,
Intermediate,
NeedFileSelection,
FinalPrivate,
FinalPublic
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
#[serde(rename_all = "snake_case")]
pub struct RsRequestFiles {
pub name: String,
pub size: u64,
pub mime: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
#[serde(rename_all = "snake_case")]
pub struct RsRequestWithCredential {
pub request: RsRequest,
pub credential: Option<PluginCredential>
}