MoosicBox Profiles
A simple profile name management system for the MoosicBox ecosystem, providing basic profile name storage and validation for request handling.
Features
- Profile Name Storage: Add, remove, and retrieve profile names
- Profile Validation: Verify profile names exist before processing requests
- Thread-Safe Operations: Safe concurrent access to profile data
- API Integration: Extract profile names from HTTP headers and query parameters
- Event System: Subscribe to manually triggered profile addition and removal events (requires
eventsfeature)
Installation
Add this to your Cargo.toml:
[]
= "0.1.4"
Features
api(default): Enables Actix Web request extractors for profile name handlingevents(default): Enables event subscription system for profile updatesfail-on-warnings: Treats warnings as errors during compilation
Usage
Basic Profile Management
use PROFILES;
API Integration
use ;
use ;
// Extract verified profile name from request
async
// Extract unverified profile name from request
async
Event Subscription (with events feature)
use ;
async
API Features
The package provides request extractors for Actix Web:
- ProfileName: Extracts and validates profile names from requests
- ProfileNameUnverified: Extracts profile names without validation
- Header Support: Reads from
moosicbox-profileheader - Query Parameter Support: Reads from
moosicboxProfilequery parameter
Profile names are extracted in this order of precedence:
- Query parameter
moosicboxProfile - HTTP header
moosicbox-profile
Error Handling
- Missing profile information returns
400 Bad Request - Non-existent profiles return
400 Bad Request - Invalid header values return
400 Bad Request
Thread Safety
All operations are thread-safe:
- Profile storage uses
std::sync::RwLockfor concurrent access - Event listeners (with
eventsfeature) useswitchy_async::sync::RwLockfor async-safe access