From d3d5e327c7701216c9c1691cd17fc24c8bb2aadd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Wed, 27 Apr 2022 14:50:51 +0200 Subject: [PATCH] validator-api: tidy swagger stuff --- .../mixnet-contract/src/interval.rs | 70 +++++++++---------- validator-api/src/contract_cache/mod.rs | 9 +-- validator-api/src/contract_cache/routes.rs | 3 +- validator-api/src/node_status_api/models.rs | 11 ++- 4 files changed, 41 insertions(+), 52 deletions(-) diff --git a/common/cosmwasm-smart-contracts/mixnet-contract/src/interval.rs b/common/cosmwasm-smart-contracts/mixnet-contract/src/interval.rs index 8d50dbdb46..7c7131eb5d 100644 --- a/common/cosmwasm-smart-contracts/mixnet-contract/src/interval.rs +++ b/common/cosmwasm-smart-contracts/mixnet-contract/src/interval.rs @@ -67,43 +67,39 @@ pub struct Interval { length: Duration, } -//impl JsonSchema for Interval { -// fn schema_name() -> String { -// "Interval".to_owned() -// } -// -// fn json_schema(gen: &mut SchemaGenerator) -> Schema { -// let mut schema_object = SchemaObject { -// instance_type: Some(InstanceType::Object.into()), -// ..SchemaObject::default() -// }; -// -// let object_validation = schema_object.object(); -// object_validation -// .properties -// .insert("id".to_owned(), gen.subschema_for::()); -// object_validation -// .required -// .insert("id".to_owned()); -// -// // WIP(JON): missing member -// //object_validation -// // .properties -// // .insert("start".to_owned(), gen.subschema_for::()); -// //object_validation -// // .required -// // .insert("start".to_owned()); -// -// object_validation -// .properties -// .insert("length".to_owned(), gen.subschema_for::()); -// object_validation -// .required -// .insert("length".to_owned()); -// -// Schema::Object(schema_object) -// } -//} +impl JsonSchema for Interval { + fn schema_name() -> String { + "Interval".to_owned() + } + + fn json_schema(gen: &mut SchemaGenerator) -> Schema { + let mut schema_object = SchemaObject { + instance_type: Some(InstanceType::Object.into()), + ..SchemaObject::default() + }; + + let object_validation = schema_object.object(); + object_validation + .properties + .insert("id".to_owned(), gen.subschema_for::()); + object_validation.required.insert("id".to_owned()); + + // WIP(JON): missing JsonSchema impl for PrimitiveDateTime + //object_validation + // .properties + // .insert("start".to_owned(), gen.subschema_for::()); + //object_validation + // .required + // .insert("start".to_owned()); + + object_validation + .properties + .insert("length".to_owned(), gen.subschema_for::()); + object_validation.required.insert("length".to_owned()); + + Schema::Object(schema_object) + } +} impl Interval { /// Initialize epoch in the contract with default values. diff --git a/validator-api/src/contract_cache/mod.rs b/validator-api/src/contract_cache/mod.rs index e4dad90a43..533a4375ad 100644 --- a/validator-api/src/contract_cache/mod.rs +++ b/validator-api/src/contract_cache/mod.rs @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 use crate::nymd_client::Client; -use rocket_okapi::openapi_get_routes; use ::time::OffsetDateTime; use anyhow::Result; use config::defaults::VALIDATOR_API_VERSION; @@ -10,6 +9,7 @@ use mixnet_contract_common::reward_params::EpochRewardParams; use mixnet_contract_common::{ GatewayBond, IdentityKey, IdentityKeyRef, Interval, MixNodeBond, RewardedSetNodeStatus, }; +use rocket_okapi::openapi_get_routes; use rocket::fairing::AdHoc; use serde::Serialize; @@ -180,7 +180,7 @@ impl ValidatorCacheRefresher { } impl ValidatorCache { - pub fn new() -> Self { + fn new() -> Self { ValidatorCache { initialised: Arc::new(AtomicBool::new(false)), inner: Arc::new(RwLock::new(ValidatorCacheInner::new())), @@ -189,13 +189,10 @@ impl ValidatorCache { pub fn stage() -> AdHoc { AdHoc::on_ignite("Validator Cache Stage", |rocket| async { - rocket - .manage(Self::new()) - .mount( + rocket.manage(Self::new()).mount( // this format! is so ugly... format!("/{}", VALIDATOR_API_VERSION), openapi_get_routes![ - //routes![ routes::get_mixnodes, routes::get_gateways, routes::get_active_set, diff --git a/validator-api/src/contract_cache/routes.rs b/validator-api/src/contract_cache/routes.rs index 083a0dce76..c2d0f075db 100644 --- a/validator-api/src/contract_cache/routes.rs +++ b/validator-api/src/contract_cache/routes.rs @@ -55,8 +55,7 @@ pub async fn get_epoch_reward_params(cache: &State) -> Json) -> Json> { Json(cache.current_epoch().await.value) diff --git a/validator-api/src/node_status_api/models.rs b/validator-api/src/node_status_api/models.rs index f7d71bc025..27acddb833 100644 --- a/validator-api/src/node_status_api/models.rs +++ b/validator-api/src/node_status_api/models.rs @@ -9,9 +9,9 @@ use rocket::response::{self, Responder, Response}; use rocket::Request; use rocket_okapi::gen::OpenApiGenerator; use rocket_okapi::response::OpenApiResponderInner; -use schemars::JsonSchema; use schemars::gen::SchemaGenerator; -use schemars::schema::{Schema, InstanceType}; +use schemars::schema::{InstanceType, Schema}; +use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use std::convert::TryFrom; use std::fmt::{self, Display, Formatter}; @@ -269,19 +269,16 @@ impl JsonSchema for ErrorResponse { object_validation .properties .insert("status".to_owned(), gen.subschema_for::()); - object_validation - .required - .insert("status".to_owned()); + object_validation.required.insert("status".to_owned()); Schema::Object(schema_object) } } - impl OpenApiResponderInner for ErrorResponse { fn responses(_gen: &mut OpenApiGenerator) -> rocket_okapi::Result { let responses = Responses::default(); - // WIP(JON) + // WIP(JON): handle responses correctly Ok(responses) } }