Upgrade peach-web to use rocket 0.5 #15

Merged
notplants merged 9 commits from rocket0.5 into main 2021-11-05 11:07:03 +00:00
5 changed files with 55 additions and 50 deletions
Showing only changes of commit 346b6c30c4 - Show all commits

View File

@ -9,7 +9,8 @@ use rocket::serde::{Deserialize, Serialize};
use peach_lib::password_utils;
use crate::error::PeachWebError;
use crate::utils::{build_json_response, JsonResponse};
use crate::utils::build_json_response;
use rocket::serde::json::Value;
// HELPERS AND ROUTES FOR /login
@ -185,12 +186,12 @@ pub fn reset_password_form_endpoint(
Ok(_) => {
let status = "success".to_string();
let msg = "New password is now saved. Return home to login.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(err) => {
let status = "error".to_string();
let msg = format!("{}", err);
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -337,12 +338,12 @@ pub fn save_password_form_endpoint(password_form: Json<PasswordForm>) -> Value {
Ok(_) => {
let status = "success".to_string();
let msg = "Your password was successfully changed".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(err) => {
let status = "error".to_string();
let msg = format!("{}", err);
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}

View File

@ -16,7 +16,8 @@ use peach_lib::config_manager::load_peach_config;
use peach_lib::stats_client::{CpuStatPercentages, DiskUsage, LoadAverage, MemStat};
use peach_lib::{dyndns_client, network_client, oled_client, sbot_client, stats_client};
use crate::utils::{build_json_response, JsonResponse};
use crate::utils::build_json_response;
use rocket::serde::json::Value;
// HELPERS AND ROUTES FOR /device
@ -195,13 +196,13 @@ pub fn reboot_device() -> Value {
debug!("Going down for reboot...");
let status = "success".to_string();
let msg = "Going down for reboot.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
warn!("Reboot failed");
let status = "error".to_string();
let msg = "Failed to reboot the device.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -233,13 +234,13 @@ pub fn shutdown_device() -> Value {
debug!("Going down for shutdown...");
let status = "success".to_string();
let msg = "Going down for shutdown.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
warn!("Shutdown failed");
let status = "error".to_string();
let msg = "Failed to shutdown the device.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}

View File

@ -8,7 +8,8 @@ use peach_lib::network_client;
use peach_lib::oled_client;
use peach_lib::stats_client;
use crate::utils::{build_json_response, JsonResponse};
use crate::utils::build_json_response;
use rocket::serde::json::Value;
/// Status route: useful for checking connectivity from web client.
#[get("/api/v1/ping")]
@ -16,7 +17,7 @@ pub fn ping_pong() -> Value {
// ping pong
let status = "success".to_string();
let msg = "pong!".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
/// Test route: useful for ad hoc testing.
glyph marked this conversation as resolved Outdated
Outdated
Review

Can we make this route name more specific? One option is to stick with the established ping route convention and use: /api/v1/ping/dyndns.

Can we make this route name more specific? One option is to stick with the established `ping` route convention and use: `/api/v1/ping/dyndns`.

I removed the test route,
-- fwiw the way I was using it was not as a test that needs to continue to exist,
but while building dyn_dns_updater,
a route that I could use to trigger the code I wanted to test.

Basically just a place where I can put arbitary code, and then call it by visiting that route.

But I will just temporarily re-add my lil test route when I want to use it for that, and it makes sense to not live in the codebase where it could cause confusion.

I removed the test route, -- fwiw the way I was using it was not as a test that needs to continue to exist, but while building dyn_dns_updater, a route that I could use to trigger the code I wanted to test. Basically just a place where I can put arbitary code, and then call it by visiting that route. But I will just temporarily re-add my lil test route when I want to use it for that, and it makes sense to not live in the codebase where it could cause confusion.
Outdated
Review

That makes sense to me. I can see the usefulness of a set of JSON /api/v1/diagnosis/... routes for these sorts of checks. It's really handy to have a programmatic and console-based way to query state.

That makes sense to me. I can see the usefulness of a set of JSON `/api/v1/diagnosis/...` routes for these sorts of checks. It's really handy to have a programmatic and console-based way to query state.
@ -25,7 +26,7 @@ pub fn test_route() -> Value {
let val = is_dns_updater_online().unwrap();
let status = "success".to_string();
let msg = val.to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
/// Status route: check availability of `peach-network` microservice.
@ -36,13 +37,13 @@ pub fn ping_network() -> Value {
debug!("peach-network responded successfully");
let status = "success".to_string();
let msg = "peach-network is available.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
warn!("peach-network failed to respond");
let status = "error".to_string();
let msg = "peach-network is unavailable.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -55,13 +56,13 @@ pub fn ping_oled() -> Value {
debug!("peach-oled responded successfully");
let status = "success".to_string();
let msg = "peach-oled is available.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
warn!("peach-oled failed to respond");
let status = "error".to_string();
let msg = "peach-oled is unavailable.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -74,13 +75,13 @@ pub fn ping_stats() -> Value {
debug!("peach-stats responded successfully");
let status = "success".to_string();
let msg = "peach-stats is available.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
warn!("peach-stats failed to respond");
let status = "error".to_string();
let msg = "peach-stats is unavailable.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}

View File

@ -19,7 +19,8 @@ use peach_lib::jsonrpc_client_core::{Error, ErrorKind};
use peach_lib::jsonrpc_core::types::error::ErrorCode;
use crate::error::PeachWebError;
use crate::utils::{build_json_response, JsonResponse};
use crate::utils::build_json_response;
use rocket::serde::json::Value;
#[derive(Debug, Deserialize, FromForm)]
pub struct DnsForm {
@ -157,12 +158,12 @@ pub fn save_dns_configuration_endpoint(dns_form: Json<DnsForm>) -> Value {
Ok(_) => {
let status = "success".to_string();
let msg = "New dynamic dns configuration is now enabled".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(err) => {
let status = "error".to_string();
let msg = format!("{}", err);
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}

View File

@ -19,7 +19,8 @@ use peach_lib::stats_client::Traffic;
use crate::utils::monitor;
use crate::utils::monitor::{Alert, Data, Threshold};
use crate::utils::{build_json_response, JsonResponse};
use crate::utils::build_json_response;
use rocket::serde::json::Value;
// STRUCTS USED BY NETWORK ROUTES
@ -766,13 +767,13 @@ pub fn update_wifi_alerts(thresholds: Json<Threshold>) -> Value {
debug!("WiFi data usage thresholds updated.");
let status = "success".to_string();
let msg = "Updated alert threshold and flags.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
warn!("Failed to update WiFi data usage thresholds.");
let status = "error".to_string();
let msg = "Failed to update WiFi data usage thresholds.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -796,13 +797,13 @@ pub fn reset_data_total() -> Value {
let data = json!(current_traffic);
let status = "success".to_string();
let msg = "Reset network data usage total.".to_string();
Json(build_json_response(status, Some(data), Some(msg)))
build_json_responses(status, Some(data), Some(msg))
}
Err(_) => {
warn!("Failed to reset network data usage total.");
let status = "error".to_string();
let msg = "Failed to reset network data usage total.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -816,12 +817,12 @@ pub fn activate_ap() -> Value {
match network_client::activate_ap() {
Ok(_) => {
let status = "success".to_string();
Json(build_json_response(status, None, None))
build_json_response(status, None, None)
}
Err(_) => {
let status = "error".to_string();
let msg = "Failed to activate WiFi access point.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -835,12 +836,12 @@ pub fn activate_client() -> Value {
match network_client::activate_client() {
Ok(_) => {
let status = "success".to_string();
Json(build_json_response(status, None, None))
build_json_response(status, None, None)
}
Err(_) => {
let status = "error".to_string();
let msg = "Failed to activate WiFi client mode.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -859,14 +860,14 @@ pub fn add_wifi(wifi: Json<WiFi>) -> Value {
// json response for successful update
let status = "success".to_string();
let msg = "WiFi credentials added.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
debug!("Failed to add WiFi credentials.");
// json response for failed update
let status = "error".to_string();
let msg = "Failed to add WiFi credentials.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -880,18 +881,18 @@ pub fn connect_ap(ssid: Json<Ssid>) -> Value {
Ok(_) => {
let status = "success".to_string();
let msg = "Connected to chosen network.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
let status = "error".to_string();
let msg = "Failed to connect to chosen network.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
},
Err(_) => {
let status = "error".to_string();
let msg = "Failed to retrieve the network ID.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -903,12 +904,12 @@ pub fn disconnect_ap(ssid: Json<Ssid>) -> Value {
Ok(_) => {
let status = "success".to_string();
let msg = "Disconnected from WiFi network.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
let status = "error".to_string();
let msg = "Failed to disconnect from WiFi network.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -921,13 +922,13 @@ pub fn forget_ap(network: Json<Ssid>) -> Value {
debug!("Removed WiFi credentials for chosen network.");
let status = "success".to_string();
let msg = "WiFi network credentials removed.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
warn!("Failed to remove WiFi credentials.");
let status = "error".to_string();
let msg = "Failed to remove WiFi network credentials.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -944,13 +945,13 @@ pub fn modify_password(wifi: Json<WiFi>) -> Value {
debug!("WiFi password updated for chosen network.");
let status = "success".to_string();
let msg = "WiFi password updated.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
Err(_) => {
warn!("Failed to update WiFi password.");
let status = "error".to_string();
let msg = "Failed to update WiFi password.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -974,7 +975,7 @@ pub fn return_ip() -> Value {
"ap0": ap_ip
});
let status = "success".to_string();
Json(build_json_response(status, Some(data), None))
build_json_response(status, Some(data), None)
}
#[get("/api/v1/network/rssi")]
@ -984,12 +985,12 @@ pub fn return_rssi() -> Value {
Ok(rssi) => {
let status = "success".to_string();
let data = json!(rssi);
Json(build_json_response(status, Some(data), None))
build_json_response(status, Some(data), None)
}
Err(_) => {
let status = "success".to_string();
let msg = "Not currently connected to an access point.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -1001,12 +1002,12 @@ pub fn return_ssid() -> Value {
Ok(network) => {
let status = "success".to_string();
let data = json!(network);
Json(build_json_response(status, Some(data), None))
build_json_response(status, Some(data), None)
}
Err(_) => {
let status = "success".to_string();
let msg = "Not currently connected to an access point.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}
@ -1028,7 +1029,7 @@ pub fn return_state() -> Value {
"ap0": ap_state
});
let status = "success".to_string();
Json(build_json_response(status, Some(data), None))
build_json_response(status, Some(data), None)
}
#[get("/api/v1/network/status")]
@ -1038,12 +1039,12 @@ pub fn return_status() -> Value {
Ok(network) => {
let status = "success".to_string();
let data = json!(network);
Json(build_json_response(status, Some(data), None))
build_json_response(status, Some(data), None)
}
Err(_) => {
let status = "success".to_string();
let msg = "Not currently connected to an access point.".to_string();
Json(build_json_response(status, None, Some(msg)))
build_json_responses(status, None, Some(msg))
}
}
}