vector_config/external/
url.rs

1use std::cell::RefCell;
2
3use serde_json::Value;
4use vector_config_common::validation::{Format, Validation};
5
6use crate::{
7    schema::{generate_string_schema, SchemaGenerator, SchemaObject},
8    Configurable, GenerateError, Metadata, ToValue,
9};
10
11impl Configurable for url::Url {
12    fn metadata() -> Metadata {
13        let mut metadata = Metadata::default();
14        metadata.set_description("A uniform resource location (URL).");
15        metadata.add_validation(Validation::KnownFormat(Format::Uri));
16        metadata
17    }
18
19    fn generate_schema(_: &RefCell<SchemaGenerator>) -> Result<SchemaObject, GenerateError> {
20        Ok(generate_string_schema())
21    }
22}
23
24impl ToValue for url::Url {
25    fn to_value(&self) -> Value {
26        Value::String(self.to_string())
27    }
28}