aboutsummaryrefslogtreecommitdiff
path: root/src/handlers/planets.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/handlers/planets.rs')
-rw-r--r--src/handlers/planets.rs47
1 files changed, 29 insertions, 18 deletions
diff --git a/src/handlers/planets.rs b/src/handlers/planets.rs
index 2c66324..8593026 100644
--- a/src/handlers/planets.rs
+++ b/src/handlers/planets.rs
@@ -1,14 +1,14 @@
use axum::Extension;
+use axum::{extract::Path, response::IntoResponse, Json};
use axum_macros::debug_handler;
-use axum::{response::IntoResponse, Json, extract::Path};
use solarlib::ship::{DbShip, Ship};
use tokio::process::Command;
use tracing::{error, instrument};
-use solarlib::star::{Star, NewPlanet};
-use solarlib::planet::Planet;
use solarlib::errors::Error as SolarlibError;
+use solarlib::planet::Planet;
+use solarlib::star::{NewPlanet, Star};
use crate::{errors::*, get_star, State};
use std::sync::Arc;
@@ -16,14 +16,13 @@ use std::sync::Arc;
pub async fn list() -> JsonResult<Json<Vec<Planet>>> {
let con_url = std::env::var("QEMU_URL").unwrap_or("qemu:///system".to_string());
let mut star = Star::new(con_url)?;
-
+
let inhabitants = star.inhabitants()?;
Ok(Json(inhabitants))
}
pub async fn get(Path(uuid): Path<String>) -> JsonResult<Json<Planet>> {
-
let con_url = std::env::var("QEMU_URL").unwrap_or("qemu:///system".to_string());
let mut star = Star::new(con_url)?;
@@ -79,7 +78,7 @@ pub async fn reboot(Path(uuid): Path<String>) -> NoneResult {
} else {
return Err(ServiceError::NotFound);
}
-
+
Ok(())
}
@@ -113,7 +112,10 @@ pub async fn new_planet(Json(new_planet): Json<NewPlanet>) -> JsonResult<Json<Pl
let ship_shasum = new_planet.clone().ship;
- let res: DbShip = reqwest::get(format!("http://{}/ships/get/{}", hw_url, ship_shasum)).await?.json().await?;
+ let res: DbShip = reqwest::get(format!("http://{}/ships/get/{}", hw_url, ship_shasum))
+ .await?
+ .json()
+ .await?;
let ship: Ship = res.into();
let mut s = get_star()?;
@@ -122,17 +124,27 @@ pub async fn new_planet(Json(new_planet): Json<NewPlanet>) -> JsonResult<Json<Pl
// Try to create right away, if the Ship already exists on the system, it'll go through. If
// not, we can download it by using the shasum
- let r = s.planet(new_planet.clone().name, new_planet.max_mem, new_planet.max_cpus, new_planet.disk_size_mb, ship.clone());
+ let r = s.planet(
+ new_planet.clone().name,
+ new_planet.max_mem,
+ new_planet.max_cpus,
+ new_planet.disk_size_mb,
+ ship.clone(),
+ );
match r {
- Err(e) => {
- match e {
- SolarlibError::MissingImage(_) => {
- ship.download(&s)?;
- return Ok(Json(s.planet(new_planet.name, new_planet.max_mem, new_planet.max_cpus, new_planet.disk_size_mb, ship.clone())?));
- },
- _ => {
- return Err(ServiceError::Solarlib(e));
- }
+ Err(e) => match e {
+ SolarlibError::MissingImage(_) => {
+ ship.download(&s)?;
+ return Ok(Json(s.planet(
+ new_planet.name,
+ new_planet.max_mem,
+ new_planet.max_cpus,
+ new_planet.disk_size_mb,
+ ship.clone(),
+ )?));
+ }
+ _ => {
+ return Err(ServiceError::Solarlib(e));
}
},
Ok(r) => {
@@ -142,7 +154,6 @@ pub async fn new_planet(Json(new_planet): Json<NewPlanet>) -> JsonResult<Json<Pl
};
}
-
pub async fn no_planet(Path(uuid): Path<String>) -> NoneResult {
let mut s = get_star()?;