#[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 { Json(json! ({ "versions": [ "v1" ] })) } #[get("/api/v1")] fn api_v1_index() -> Json { Json(json! ({ "endpoints": [ "generate", "generate_ambient" ] })) } #[derive(Debug, Serialize, Deserialize)] struct Output { data: libsig::SongIdea, text: String, } #[get("/api/v1/generate")] fn generate() -> Json { let idea = libsig::SongIdea::generate(); Json(Output { data: idea.clone(), text: idea.to_string() }) } #[get("/api/v1/generate_ambient")] fn generate_ambient() -> Json { 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]) }