proxyster_lib/
provider.rs

1use serde_derive::Deserialize;
2
3use crate::provider_source::ProviderSource;
4
5/**
6A proxy provider
7
8# Examples
9
10(in `providers.toml`)
11
12```toml
13[[proxy]]
14name = "proxy1"
15sources = ["https://raw.githubusercontent.com/..."]
16```
17*/
18#[derive(Deserialize)]
19pub struct Provider {
20    pub name: String,
21    pub sources: Vec<ProviderSource>, // array of InitialProviderSource
22}
23
24// implement From for Providerpo
25impl From<toml::Value> for Provider {
26    fn from(value: toml::Value) -> Self {
27        let sources: Vec<ProviderSource> = value
28            .get("sources")
29            .unwrap()
30            .as_array()
31            .unwrap()
32            .iter()
33            .map(|v| ProviderSource::from(v.clone()))
34            .collect();
35
36        Provider {
37            name: value.get("name").unwrap().as_str().unwrap().to_owned(),
38            sources,
39        }
40    }
41}
42