Skip to main content

compile_form_data

Function compile_form_data 

Source
pub async fn compile_form_data(form: &mut RouterForm) -> FormResult
Expand 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.