libsubconverter/parser/
parse_settings.rs1use std::collections::HashMap;
2
3use crate::models::RegexMatchConfigs;
4use crate::utils::http::{parse_proxy, ProxyConfig};
5use crate::Settings;
6use case_insensitive_string::CaseInsensitiveString;
7
8#[derive(Debug, Clone)]
11pub struct ParseSettings {
12 pub proxy: ProxyConfig,
14
15 pub exclude_remarks: Option<Vec<String>>,
17
18 pub include_remarks: Option<Vec<String>>,
20
21 pub stream_rules: Option<RegexMatchConfigs>,
23
24 pub time_rules: Option<RegexMatchConfigs>,
26
27 pub sub_info: Option<String>,
29
30 pub authorized: bool,
32
33 pub request_header: Option<HashMap<CaseInsensitiveString, String>>,
35
36 #[cfg(feature = "js_runtime")]
38 pub js_runtime: Option<()>, #[cfg(feature = "js_runtime")]
42 pub js_context: Option<()>, }
44
45impl Default for ParseSettings {
46 fn default() -> Self {
47 let settings = Settings::current();
49
50 ParseSettings {
51 proxy: parse_proxy(&settings.proxy_subscription),
52 exclude_remarks: if settings.exclude_remarks.is_empty() {
53 None
54 } else {
55 Some(settings.exclude_remarks.clone())
56 },
57 include_remarks: if settings.include_remarks.is_empty() {
58 None
59 } else {
60 Some(settings.include_remarks.clone())
61 },
62 stream_rules: None, time_rules: None, sub_info: None,
65 authorized: !settings.api_access_token.is_empty(),
66 request_header: None,
67 #[cfg(feature = "js_runtime")]
68 js_runtime: None,
69 #[cfg(feature = "js_runtime")]
70 js_context: None,
71 }
72 }
73}
74
75pub fn create_parse_settings() -> ParseSettings {
77 ParseSettings::default()
78}
79
80pub fn create_authorized_settings() -> ParseSettings {
82 let mut settings = ParseSettings::default();
83 settings.authorized = true;
84 settings
85}