pub async fn compile_form_data(form: &mut RouterForm) -> FormResultExpand description
Converts the incoming form data with type RouterForm to FormData which is the preferred type in the library.
§Examples
§Plaintext only
use axum::body::Body;
use rumtk_core::{rumtk_spawn_task, rumtk_resolve_task};
use rumtk_web::utils::testdata::TESTDATA_FORMDATA_REQUEST;
use rumtk_web::utils::RouterForm;
use rumtk_web::utils::form_data::compile_form_data;
use rumtk_web::FormData;
use axum::extract::{Request, FromRequest};
use rumtk_core::core::RUMResult;
use rumtk_core::types::RUMBuffer;
use rumtk_web::form_data::FormResult;
let expected_form = FormData::default();
async fn create_form() -> FormResult {
let mut raw_form = RouterForm::from_request(TESTDATA_FORMDATA_REQUEST(), &()).await.expect("Multipart form expected.");
compile_form_data(&mut raw_form).await
}
rumtk_resolve_task!(create_form());
§Note
Because anything that axum does not like could trigger a truncation of the incoming form, I
could not even test this function without silencing the parsing error and returning any successful
results so far. Axum would complain about an error parsing the multipart form when using a "mocked" Body buffer.
Turns out, you can still properly parse a buffer. Also, for testing purposes, you cannot use byte
literals as the input to a mocked Body but you can use a Vec<u8> and write!() to it then call
into() on that buffer and everything then works despite still complaining about the error.
Since we are ignoring anything past this point, I think this is technically safe while still
allowing us to test this logic.