add dev mode support
This commit is contained in:
@@ -294,7 +294,9 @@ pub fn httpd(_reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
|
||||
let file_handle = BOARD_ACCESS.lock().unwrap().get_file_handle(&filename, false);
|
||||
match file_handle {
|
||||
Ok(mut file_handle) => {
|
||||
let mut response = request.into_ok_response()?;
|
||||
|
||||
let headers = [("Access-Control-Allow-Origin","*")];
|
||||
let mut response = request.into_response(200, None, &headers)?;
|
||||
const BUFFER_SIZE: usize = 512;
|
||||
let mut buffer: [u8; BUFFER_SIZE] = [0; BUFFER_SIZE];
|
||||
let mut total_read: usize = 0;
|
||||
@@ -317,9 +319,7 @@ pub fn httpd(_reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
|
||||
//todo set headers here for filename to be error
|
||||
let error_text = err.to_string();
|
||||
println!("error handling get file {}", error_text);
|
||||
request
|
||||
.into_status_response(500)?
|
||||
.write(error_text.as_bytes())?;
|
||||
cors_response(request, 500, &error_text)?;
|
||||
}
|
||||
}
|
||||
anyhow::Ok(())
|
||||
@@ -345,15 +345,13 @@ pub fn httpd(_reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
|
||||
break;
|
||||
}
|
||||
}
|
||||
request.into_ok_response().unwrap().write(format!("saved {total_read} bytes").as_bytes()).unwrap();
|
||||
cors_response(request, 200, &format!("saved {total_read} bytes"))?;
|
||||
},
|
||||
Err(err) => {
|
||||
//todo set headers here for filename to be error
|
||||
let error_text = err.to_string();
|
||||
println!("error handling get file {}", error_text);
|
||||
request
|
||||
.into_status_response(500)?
|
||||
.write(error_text.as_bytes())?;
|
||||
cors_response(request, 500, &error_text)?;
|
||||
}
|
||||
}
|
||||
anyhow::Ok(())
|
||||
@@ -368,11 +366,11 @@ pub fn httpd(_reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
|
||||
match board.delete_file(&filename) {
|
||||
Ok(_) => {
|
||||
let info = format!("Deleted file {copy}");
|
||||
request.into_ok_response().unwrap().write(info.as_bytes()).unwrap();
|
||||
cors_response(request, 200, &info)?;
|
||||
},
|
||||
Err(err) => {
|
||||
let info = format!("Could not delete file {copy} {err:?}");
|
||||
request.into_status_response(400).unwrap().write(info.as_bytes()).unwrap();
|
||||
cors_response(request, 400, &info)?;
|
||||
},
|
||||
}
|
||||
anyhow::Ok(())
|
||||
@@ -450,7 +448,7 @@ pub fn httpd(_reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
|
||||
server
|
||||
.fn_handler("/", Method::Get, move |request| {
|
||||
let mut response = request.into_ok_response()?;
|
||||
response.write(include_bytes!("config.html"))?;let mut buf = [0_u8; 3072];
|
||||
response.write(include_bytes!("index.html"))?;let mut buf = [0_u8; 3072];
|
||||
anyhow::Ok(())
|
||||
})
|
||||
.unwrap();
|
||||
@@ -475,6 +473,13 @@ pub fn httpd(_reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
|
||||
server
|
||||
}
|
||||
|
||||
fn cors_response(request: Request<&mut EspHttpConnection>, status: u16, body: &str) -> Result<(), anyhow::Error>{
|
||||
let headers = [("Access-Control-Allow-Origin","*")];
|
||||
let mut response = request.into_response(status, None, &headers)?;
|
||||
response.write(body.as_bytes())?;
|
||||
response.flush()?;
|
||||
return anyhow::Ok(());
|
||||
}
|
||||
|
||||
type AnyhowHandler =
|
||||
fn(&mut Request<&mut EspHttpConnection>) -> Result<Option<std::string::String>, anyhow::Error>;
|
||||
@@ -486,18 +491,16 @@ fn handle_error_to500(
|
||||
match error {
|
||||
Ok(answer) => match answer {
|
||||
Some(json) => {
|
||||
let mut response = request.into_ok_response()?;
|
||||
response.write(json.as_bytes())?;
|
||||
response.flush()?;
|
||||
cors_response(request, 200, &json)?;
|
||||
}
|
||||
None => {
|
||||
cors_response(request, 200, "")?;
|
||||
}
|
||||
None => {}
|
||||
},
|
||||
Err(err) => {
|
||||
let error_text = err.to_string();
|
||||
println!("error handling process {}", error_text);
|
||||
request
|
||||
.into_status_response(500)?
|
||||
.write(error_text.as_bytes())?;
|
||||
cors_response(request, 500, &error_text)?;
|
||||
}
|
||||
}
|
||||
return anyhow::Ok(());
|
||||
|
||||
Reference in New Issue
Block a user