foxtive-ntex-multipart

Crates.iofoxtive-ntex-multipart
lib.rsfoxtive-ntex-multipart
version0.7.2
created_at2025-03-10 02:22:55.523861+00
updated_at2025-09-26 00:42:25.157782+00
descriptionLibrary For Handling File Uploads Based on Ntex
homepage
repositoryhttps://github.com/foxtive/foxtive-ntex
max_upload_size
id1586070
size156,166
Ahmad Mustapha (Ahmard)

documentation

README

Foxtive Ntex Multipart

This is a simple multipart parser built for Ntex.rs

A powerful and flexible multipart form data parser with support for:

  • File uploads with validation (size, type, count)
  • Custom types that implement FromStr
  • Optional UUID support via feature flags
  • Type-safe parsing for all primitive types
  • Option support for optional fields
  • Comprehensive error handling

Installation

Basic Installation

cargo add foxtive-ntex-multipart

With UUID Support

cargo add foxtive-ntex-multipart --features uuid

Cargo.toml Configuration

[dependencies]
# Basic installation
foxtive-ntex-multipart = "0.3"

# With UUID support
foxtive-ntex-multipart = { version = "0.3", features = ["uuid"] }

Features

Optional Features

  • uuid - Enables support for parsing uuid::Uuid from multipart data

Usage

Basic Type Parsing

use foxtive_ntex_multipart::Multipart;

// Parse various types from multipart data
let user_id: i32 = multipart.post("user_id")?;
let username: String = multipart.post("username")?;
let is_active: bool = multipart.post("is_active")?;
let price: f64 = multipart.post("price")?;

Optional Fields

// Optional fields return None if missing or empty
let optional_age: Option<i32> = multipart.post("age")?;
let optional_email: Option<String> = multipart.post("email")?;

Default Values

// Provide default values for missing fields
let priority = multipart.post_or("priority", false);
let timeout = multipart.post_or("timeout", 30);

UUID Support (with uuid feature)

use uuid::Uuid;

// Parse UUIDs from multipart data
let user_id: Uuid = multipart.post("user_id")?;
let optional_session: Option<Uuid> = multipart.post("session_id")?;
let default_id = multipart.post_or("missing_id", Uuid::new_v4());

Custom Types

use foxtive_ntex_multipart::impl_post_parseable_for_custom_type;
use std::str::FromStr;

#[derive(Debug, PartialEq)]
struct UserId(u64);

impl FromStr for UserId {
    type Err = std::num::ParseIntError;
    fn from_str(s: &str) -> Result<Self, Self::Err> {
        Ok(UserId(s.parse()?))
    }
}

// Enable multipart parsing for your custom type
impl_post_parseable_for_custom_type!(UserId);

// Now you can use it in multipart parsing
let user_id: UserId = multipart.post("user_id")?;
let optional_id: Option<UserId> = multipart.post("optional_id")?;

Supported Types

The library automatically supports all types that implement FromStr:

Primitive Types:

  • Integers: i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize
  • Floats: f32, f64
  • Other: bool, char, String

Standard Library Types:

  • Network: IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6
  • Path: PathBuf
  • NonZero: All NonZero* integer types

Optional Types:

  • uuid::Uuid (with uuid feature)

Custom Types:

  • Any type implementing FromStr via the impl_post_parseable_for_custom_type! macro

🙌 Contributing

Contributions, bug reports, and feature requests are welcome! Feel free to open issues or PRs.

License

This project is licensed under the MIT License.

Commit count: 149

cargo fmt