add swagger ui
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user