add swagger ui

This commit is contained in:
stubbfelnewpc
2020-06-27 01:20:48 +02:00
parent 7b3d598e3a
commit a43713a115
3 changed files with 165 additions and 16 deletions

View File

@@ -1,18 +1,25 @@
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] extern crate rocket;
#[macro_use] extern crate serde_derive;
#[macro_use] extern crate rocket_okapi;
use rocket::response::status;
use schemars::JsonSchema;
use rocket_okapi::swagger_ui::*;
use rocket::{
State,
response::status
};
use rocket_contrib::json::Json;
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
use std::hash::{
Hash,
Hasher
};
// podman create --name test -p 3000:3000 -v $PWD:/nixide -w /nixide docker.io/nixos/nix nix-shell --pure start-ide.nix --run run_ide.sh
#[derive(Serialize, Deserialize, Hash)]
#[derive(Serialize, Deserialize, Hash, JsonSchema)]
pub struct OpenGitParam
{
inquirer: String,
@@ -20,7 +27,7 @@ pub struct OpenGitParam
ref_name: String
}
#[derive(Serialize, Deserialize, Hash)]
#[derive(Serialize, Deserialize, Hash, JsonSchema)]
pub struct IdeState
{
ide_id: String,
@@ -87,7 +94,7 @@ fn default_working_folder() -> String {
"$PWD".to_owned()
}
#[openapi]
#[get("/open/<inquirer>/git?<clone_url>&<ref_name>")]
fn v1_open_inquirer_git(inquirer: String, clone_url: String, ref_name: String) -> status::Accepted<Json<IdeState>> {
let param = OpenGitParam {
@@ -124,7 +131,8 @@ fn v1_open_inquirer_git(inquirer: String, clone_url: String, ref_name: String) -
)
)
}
use rocket::State;
#[openapi]
#[get("/state/<ide_ide>")]
fn v1_ide_state(ide_ide: String, c : State<NixIdeManageService>) -> status::Accepted<Json<IdeState>>
{
@@ -140,6 +148,7 @@ fn v1_ide_state(ide_ide: String, c : State<NixIdeManageService>) -> status::Acce
)
}
#[openapi]
#[get("/open/<inquirer>/gitea?<clone_url>&<ref_name>")]
fn v1_open_inquirer_gitea(inquirer: String, clone_url: String, ref_name: String) -> status::Accepted<Json<OpenGitParam>> {
let param = OpenGitParam {
@@ -150,6 +159,7 @@ fn v1_open_inquirer_gitea(inquirer: String, clone_url: String, ref_name: String)
status::Accepted(Some(Json(param)))
}
#[openapi]
#[get("/open/<inquirer>/gitlab?<clone_url>&<ref_name>")]
fn v1_open_inquirer_gitlab(inquirer: String, clone_url: String, ref_name: String) -> status::Accepted<Json<OpenGitParam>> {
let param = OpenGitParam {
@@ -160,6 +170,7 @@ fn v1_open_inquirer_gitlab(inquirer: String, clone_url: String, ref_name: String
status::Accepted(Some(Json(param)))
}
#[openapi]
#[get("/open/<inquirer>/github?<clone_url>&<ref_name>")]
fn v1_open_inquirer_github(inquirer: String, clone_url: String, ref_name: String) -> status::Accepted<Json<OpenGitParam>> {
let param = OpenGitParam {
@@ -170,6 +181,7 @@ fn v1_open_inquirer_github(inquirer: String, clone_url: String, ref_name: String
status::Accepted(Some(Json(param)))
}
#[openapi]
#[get("/open/gitlab?<clone_url>&<ref_name>")]
fn v1_open_gitlab(clone_url: String, ref_name: String) -> status::Accepted<Json<OpenGitParam>> {
let param = OpenGitParam {
@@ -180,13 +192,11 @@ fn v1_open_gitlab(clone_url: String, ref_name: String) -> status::Accepted<Json<
status::Accepted(Some(Json(param)))
}
use rocket::fairing::AdHoc;
fn main() {
let eng = DummyEngine{};
let exectuor = NixIdeManageService{eng:Box::new(eng)};
rocket::ignite()
.mount("/api/v1/", routes![
.mount("/api/v1/", routes_with_openapi![
v1_open_inquirer_git,
v1_open_inquirer_gitea,
v1_open_gitlab,
@@ -195,8 +205,12 @@ fn main() {
v1_ide_state
])
.manage(exectuor)
.attach(AdHoc::on_launch("Launch Printer", |_| {
println!("Rocket is about to launch! Exciting! Here we go...");
}))
.mount(
"/swagger-ui/",
make_swagger_ui(&SwaggerUIConfig {
url: "/api/v1/openapi.json".to_owned(),
..Default::default()
}),
)
.launch();
}