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