vector_config/
http.rs

1use std::cell::RefCell;
2
3use http::StatusCode;
4use serde_json::Value;
5
6use crate::{
7    Configurable, GenerateError, Metadata, ToValue,
8    schema::{SchemaGenerator, SchemaObject, generate_number_schema},
9};
10
11impl ToValue for StatusCode {
12    fn to_value(&self) -> Value {
13        serde_json::to_value(self.as_u16()).expect("Could not convert HTTP status code to JSON")
14    }
15}
16
17impl Configurable for StatusCode {
18    fn referenceable_name() -> Option<&'static str> {
19        Some("http::StatusCode")
20    }
21
22    fn is_optional() -> bool {
23        true
24    }
25
26    fn metadata() -> Metadata {
27        let mut metadata = Metadata::default();
28        metadata.set_description("HTTP response status code");
29        metadata.set_default_value(StatusCode::OK);
30        metadata
31    }
32
33    fn generate_schema(_: &RefCell<SchemaGenerator>) -> Result<SchemaObject, GenerateError> {
34        Ok(generate_number_schema::<u16>())
35    }
36}