diff options
| author | Cara Salter <cara@devcara.com> | 2022-06-28 09:42:00 -0400 | 
|---|---|---|
| committer | Cara Salter <cara@devcara.com> | 2022-06-28 09:42:00 -0400 | 
| commit | a739b00bc366758be9c452979cc4b4c831dd8a75 (patch) | |
| tree | 99d068468127c8f185da4eb9c0056a991c37c3c7 /src/handlers/planets.rs | |
| parent | 2dea604581cafbfbb73443ec2449cda391d12ab7 (diff) | |
| download | solard-a739b00bc366758be9c452979cc4b4c831dd8a75.tar.gz solard-a739b00bc366758be9c452979cc4b4c831dd8a75.zip | |
tool: FMT
Diffstat (limited to 'src/handlers/planets.rs')
| -rw-r--r-- | src/handlers/planets.rs | 47 | 
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()?; | 
