use std::collections::HashMap;
use crate::models::RegexMatchConfigs;
use crate::utils::http::{parse_proxy, ProxyConfig};
use crate::Settings;
use case_insensitive_string::CaseInsensitiveString;
#[derive(Debug, Clone)]
pub struct ParseSettings {
pub proxy: ProxyConfig,
pub exclude_remarks: Option<Vec<String>>,
pub include_remarks: Option<Vec<String>>,
pub stream_rules: Option<RegexMatchConfigs>,
pub time_rules: Option<RegexMatchConfigs>,
pub sub_info: Option<String>,
pub authorized: bool,
pub request_header: Option<HashMap<CaseInsensitiveString, String>>,
#[cfg(feature = "js_runtime")]
pub js_runtime: Option<()>,
#[cfg(feature = "js_runtime")]
pub js_context: Option<()>, }
impl Default for ParseSettings {
fn default() -> Self {
let settings = Settings::current();
ParseSettings {
proxy: parse_proxy(&settings.proxy_subscription),
exclude_remarks: if settings.exclude_remarks.is_empty() {
None
} else {
Some(settings.exclude_remarks.clone())
},
include_remarks: if settings.include_remarks.is_empty() {
None
} else {
Some(settings.include_remarks.clone())
},
stream_rules: None, time_rules: None, sub_info: None,
authorized: !settings.api_access_token.is_empty(),
request_header: None,
#[cfg(feature = "js_runtime")]
js_runtime: None,
#[cfg(feature = "js_runtime")]
js_context: None,
}
}
}
pub fn create_parse_settings() -> ParseSettings {
ParseSettings::default()
}
pub fn create_authorized_settings() -> ParseSettings {
let mut settings = ParseSettings::default();
settings.authorized = true;
settings
}