song-idea-generator/sigweb/src/main.rs

50 lines
1.0 KiB
Rust

#[macro_use]
extern crate rocket;
use libsig;
use serde::{Serialize, Deserialize};
use rocket::serde::json::Json;
use serde_json::{json, Value};
#[get("/api")]
fn api_version_available() -> Json<Value> {
Json(json! ({
"versions": [ "v1" ]
}))
}
#[get("/api/v1")]
fn api_v1_index() -> Json<Value> {
Json(json! ({
"endpoints": [ "generate", "generate_ambient" ]
}))
}
#[derive(Debug, Serialize, Deserialize)]
struct Output {
data: libsig::SongIdea,
text: String,
}
#[get("/api/v1/generate")]
fn generate() -> Json<Output> {
let idea = libsig::SongIdea::generate();
Json(Output {
data: idea.clone(),
text: idea.to_string()
})
}
#[get("/api/v1/generate_ambient")]
fn generate_ambient() -> Json<Output> {
let idea = libsig::SongIdea::generate_ambient();
Json(Output {
data: idea.clone(),
text: idea.to_string()
})
}
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![api_version_available, api_v1_index, generate, generate_ambient])
}