From 3525bcd09cd030df3f2ed7684f2aad1bcc42d68b Mon Sep 17 00:00:00 2001 From: asonix Date: Sat, 10 Sep 2022 10:55:52 -0500 Subject: [PATCH] Remove config from FormData trait --- examples/simple.rs | 5 ++--- examples/upload.rs | 8 ++++---- src/extractor.rs | 6 ++---- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/examples/simple.rs b/examples/simple.rs index d837e15..5053132 100644 --- a/examples/simple.rs +++ b/examples/simple.rs @@ -1,18 +1,17 @@ use actix_form_data::{Error, Field, Form, FormData, Multipart, Value}; use actix_web::{ web::{post, resource}, - App, HttpResponse, HttpServer, + App, HttpRequest, HttpResponse, HttpServer, }; use futures_util::stream::StreamExt; struct UploadedContent(Value<()>); impl FormData for UploadedContent { - type Config = (); type Item = (); type Error = Error; - fn form(_: Option<&Self::Config>) -> Form { + fn form(_: &HttpRequest) -> Form { Form::new() .field("Hey", Field::text()) .field( diff --git a/examples/upload.rs b/examples/upload.rs index 403e408..cf98ad5 100644 --- a/examples/upload.rs +++ b/examples/upload.rs @@ -3,7 +3,7 @@ use actix_web::{ http::StatusCode, middleware::Logger, web::{post, resource, Bytes}, - App, HttpResponse, HttpServer, ResponseError, + App, HttpRequest, HttpResponse, HttpServer, ResponseError, }; use futures_util::stream::{Stream, StreamExt, TryStreamExt}; use std::{ @@ -58,12 +58,12 @@ impl ResponseError for Errors { struct UploadedContent(Value); impl FormData for UploadedContent { - type Config = Arc; type Item = PathBuf; type Error = Errors; - fn form(file_count: Option<&Self::Config>) -> Form { - let file_count = Arc::clone(file_count.expect("Set config")); + fn form(req: &HttpRequest) -> Form { + let file_count = req.app_data::>().expect("Set config"); + let file_count = Arc::clone(file_count); Form::new() .field("Hey", Field::text()) diff --git a/src/extractor.rs b/src/extractor.rs index 9191b09..a152b71 100644 --- a/src/extractor.rs +++ b/src/extractor.rs @@ -6,11 +6,10 @@ use actix_web::{dev::Payload, FromRequest, HttpRequest, ResponseError}; use std::{future::Future, pin::Pin}; pub trait FormData { - type Config: 'static; type Item: 'static; type Error: ResponseError + 'static; - fn form(config: Option<&Self::Config>) -> Form; + fn form(req: &HttpRequest) -> Form; fn extract(value: Value) -> Result where @@ -28,8 +27,7 @@ where fn from_request(req: &HttpRequest, payload: &mut Payload) -> Self::Future { let multipart = actix_multipart::Multipart::new(req.headers(), payload.take()); - let config = req.app_data::(); - let form = T::form(config); + let form = T::form(req); Box::pin(async move { let uploaded = match handle_multipart(multipart, &form).await {