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}