parse config from json encoded param

This commit is contained in:
Evan Feenstra
2022-05-22 14:18:07 -07:00
parent bb69909f8d
commit c3e05c530e
2 changed files with 16 additions and 4 deletions

View File

@@ -26,6 +26,7 @@ log = "0.4"
url = "2" url = "2"
serde_urlencoded = "0.7.1" serde_urlencoded = "0.7.1"
serde = "1.0.137" serde = "1.0.137"
serde_json = "1.0.81"
[build-dependencies] [build-dependencies]
embuild = "0.29" embuild = "0.29"

View File

@@ -12,17 +12,25 @@ use esp_idf_svc::nvs_storage::EspNvsStorage;
use embedded_svc::storage::Storage; use embedded_svc::storage::Storage;
use serde::Deserialize; use serde::Deserialize;
#[derive(Clone, Debug, Deserialize)]
pub struct Params {
pub config: String
}
#[derive(Clone, Debug, Deserialize)] #[derive(Clone, Debug, Deserialize)]
pub struct Config { pub struct Config {
pub broker: String, pub broker: String,
// pub ssid: String, pub ssid: String,
// pub pass: String, pub pass: String,
} }
/* /*
curl -X POST 192.168.71.1/config?broker=52.91.253.115%3A1883&ssid=apples%26acorns&pass=42flutes curl -X POST 192.168.71.1/config?broker=52.91.253.115%3A1883&ssid=apples%26acorns&pass=42flutes
curl -X POST 192.168.71.1/config?ssid=apples%26acorns&pass=42flutes&broker=52.91.253.115%3A1883
curl -X POST 192.168.71.1/config?broker=52.91.253.115%3A1883 curl -X POST 192.168.71.1/config?broker=52.91.253.115%3A1883
curl -X POST 192.168.71.1/config?config=%7B%22ssid%22%3A%22apples%26acorns%22%2C%22pass%22%3A%2242flutes%22%2C%22broker%22%3A%2252.91.253.115%3A1883%22%7D
*/ */
#[allow(unused_variables)] #[allow(unused_variables)]
@@ -34,8 +42,11 @@ pub fn config_server(mutex: Arc<(Mutex<Option<Config>>, Condvar)>, store: Arc<Mu
.at("/config") .at("/config")
.post(move |mut request| { .post(move |mut request| {
let bod = &request.query_string() let bod = &request.query_string()
.ok_or(anyhow::anyhow!("failed to parse query string"))?;; .ok_or(anyhow::anyhow!("failed to parse query string"))?;
let conf = serde_urlencoded::from_str::<Config>(bod)?; println!("bod {:?}", bod);
let params = serde_urlencoded::from_str::<Params>(bod)?;
let conf = serde_json::from_str::<Config>(&params.config)?;
let mut wait = mutex.0.lock().unwrap(); let mut wait = mutex.0.lock().unwrap();
*wait = Some(conf); *wait = Some(conf);