use actix_web::http::{header::DispositionType, Method}; use mime; /// Describes `StaticFiles` configiration /// /// To configure actix's static resources you need /// to define own configiration type and implement any method /// you wish to customize. /// As trait implements reasonable defaults for Actix. /// /// ## Example /// /// ```rust /// use actix_web::http::header::DispositionType; /// use actix_files::{StaticFileConfig, NamedFile}; /// /// #[derive(Default)] /// struct MyConfig; /// /// impl StaticFileConfig for MyConfig { /// fn content_disposition_map(typ: mime::Name) -> DispositionType { /// DispositionType::Attachment /// } /// } /// /// let file = NamedFile::open_with_config("foo.txt", MyConfig); /// ``` pub trait StaticFileConfig: Default { /// Describes mapping for mime type to content disposition header /// /// By default `IMAGE`, `TEXT` and `VIDEO` are mapped to Inline. /// Others are mapped to Attachment fn content_disposition_map(typ: mime::Name) -> DispositionType { match typ { mime::IMAGE | mime::TEXT | mime::VIDEO => DispositionType::Inline, _ => DispositionType::Attachment, } } /// Describes whether Actix should attempt to calculate `ETag` /// /// Defaults to `true` fn is_use_etag() -> bool { true } /// Describes whether Actix should use last modified date of file. /// /// Defaults to `true` fn is_use_last_modifier() -> bool { true } /// Describes allowed methods to access static resources. /// /// By default all methods are allowed fn is_method_allowed(_method: &Method) -> bool { true } } /// Default content disposition as described in /// [StaticFileConfig](trait.StaticFileConfig.html) #[derive(Default)] pub struct DefaultConfig; impl StaticFileConfig for DefaultConfig {}