diff --git a/helpers/pagetop-statics/README.md b/helpers/pagetop-statics/README.md index 7466dc1f..3184f095 100644 --- a/helpers/pagetop-statics/README.md +++ b/helpers/pagetop-statics/README.md @@ -11,30 +11,25 @@ -## 🧭 Sobre PageTop +## Sobre PageTop [PageTop](https://docs.rs/pagetop) es un entorno de desarrollo que reivindica la esencia de la web clásica para crear soluciones web SSR (*renderizadas en el servidor*) modulares, extensibles y configurables, basadas en HTML, CSS y JavaScript. - -## 🗺️ Descripción general +## Descripción general Este *crate* permite incluir archivos estáticos en el ejecutable de las aplicaciones PageTop para servirlos de forma eficiente vía web, con detección de cambios que optimizan el tiempo de compilación. +## Créditos -## 📚 Créditos - -Para ello, adapta el código de los *crates* [static-files](https://crates.io/crates/static_files) -(versión [0.2.5](https://github.com/static-files-rs/static-files/tree/v0.2.5)) y -[actix-web-static-files](https://crates.io/crates/actix_web_static_files) (versión -[4.0.1](https://github.com/kilork/actix-web-static-files/tree/v4.0.1)), desarrollados ambos por -[Alexander Korolev](https://crates.io/users/kilork). - -Estas implementaciones se integran en PageTop para evitar que cada proyecto tenga que declarar -`static-files` manualmente como dependencia en su `Cargo.toml`. +Para ello, adapta el código de [static-files](https://crates.io/crates/static_files) (versión +[0.2.5](https://github.com/static-files-rs/static-files/tree/v0.2.5)) desarrollado por +[Alexander Korolev](https://crates.io/users/kilork), bajo licencia MIT/Apache 2.0. La implementación +se integra en PageTop para evitar que cada proyecto tenga que declarar `static-files` manualmente +como dependencia en su `Cargo.toml`. ## 🚧 Advertencia diff --git a/helpers/pagetop-statics/src/lib.rs b/helpers/pagetop-statics/src/lib.rs index f0135695..d72176c6 100644 --- a/helpers/pagetop-statics/src/lib.rs +++ b/helpers/pagetop-statics/src/lib.rs @@ -26,14 +26,11 @@ compilación. ## Créditos -Para ello, adapta el código de los *crates* [static-files](https://crates.io/crates/static_files) -(versión [0.2.5](https://github.com/static-files-rs/static-files/tree/v0.2.5)) y -[actix-web-static-files](https://crates.io/crates/actix_web_static_files) (versión -[4.0.1](https://github.com/kilork/actix-web-static-files/tree/v4.0.1)), desarrollados ambos por -[Alexander Korolev](https://crates.io/users/kilork). - -Estas implementaciones se integran en PageTop para evitar que cada proyecto tenga que declarar -`static-files` manualmente como dependencia en su `Cargo.toml`. +Para ello, adapta el código de [static-files](https://crates.io/crates/static_files) (versión +[0.2.5](https://github.com/static-files-rs/static-files/tree/v0.2.5)) desarrollado por +[Alexander Korolev](https://crates.io/users/kilork), bajo licencia MIT/Apache 2.0. La implementación +se integra en PageTop para evitar que cada proyecto tenga que declarar `static-files` manualmente +como dependencia en su `Cargo.toml`. */ #![doc(test(no_crate_inject))] @@ -44,7 +41,7 @@ Estas implementaciones se integran en PageTop para evitar que cada proyecto teng /// Resource definition and single module based generation. pub mod resource; -pub use resource::Resource as StaticResource; +pub use resource::Resource as StaticFile; mod resource_dir; pub use resource_dir::{ResourceDir, resource_dir}; diff --git a/helpers/pagetop-statics/src/resource.rs b/helpers/pagetop-statics/src/resource.rs index 0b81969e..62a31ee7 100644 --- a/helpers/pagetop-statics/src/resource.rs +++ b/helpers/pagetop-statics/src/resource.rs @@ -93,9 +93,9 @@ pub fn generate_resources, G: AsRef>( /// ```rust /// use std::collections::HashMap; /// -/// use pagetop_statics::StaticResource; +/// use pagetop_statics::StaticFile; /// -/// fn generate_mapping() -> HashMap<&'static str, StaticResource> { +/// fn generate_mapping() -> HashMap<&'static str, StaticFile> { /// include!(concat!(env!("OUT_DIR"), "/generated_mapping.rs")) /// } /// @@ -221,7 +221,7 @@ pub(crate) fn generate_function_header( ) -> io::Result<()> { writeln!( f, - "#[allow(clippy::unreadable_literal)] pub fn {fn_name}() -> ::std::collections::HashMap<&'static str, ::{crate_name}::StaticResource> {{", + "#[allow(clippy::unreadable_literal)] pub fn {fn_name}() -> ::std::collections::HashMap<&'static str, ::{crate_name}::StaticFile> {{", ) } diff --git a/helpers/pagetop-statics/src/sets.rs b/helpers/pagetop-statics/src/sets.rs index 5e09f1ff..e319de0f 100644 --- a/helpers/pagetop-statics/src/sets.rs +++ b/helpers/pagetop-statics/src/sets.rs @@ -116,7 +116,7 @@ where writeln!( module_file, " -use ::{crate_name}::StaticResource; +use ::{crate_name}::StaticFile; use ::std::collections::HashMap;" )?; @@ -177,7 +177,7 @@ fn create_set_module_file(module_dir: &Path, module_index: usize) -> io::Result< "#[allow(clippy::wildcard_imports)] use super::*; #[allow(clippy::unreadable_literal)] -pub(crate) fn generate({DEFAULT_VARIABLE_NAME}: &mut HashMap<&'static str, StaticResource>) {{", +pub(crate) fn generate({DEFAULT_VARIABLE_NAME}: &mut HashMap<&'static str, StaticFile>) {{", )?; Ok(set_module) diff --git a/src/lib.rs b/src/lib.rs index d4712a0c..9e900335 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -134,26 +134,26 @@ pub const PAGETOP_VERSION: &str = env!("CARGO_PKG_VERSION"); pub use pagetop_macros::{AutoDefault, builder_fn, html, main, test}; -pub use pagetop_statics::{StaticResource, resource}; +pub use pagetop_statics::{StaticFile, resource}; pub use getter_methods::Getters; /// Contenedor para un conjunto de recursos embebidos. #[derive(AutoDefault)] pub struct StaticResources { - bundle: HashMap<&'static str, StaticResource>, + bundle: HashMap<&'static str, StaticFile>, } impl StaticResources { /// Crea un contenedor para un conjunto de recursos generado por `build.rs` (consultar /// [`pagetop_build`](https://docs.rs/pagetop-build)). - pub fn new(bundle: HashMap<&'static str, StaticResource>) -> Self { + pub fn new(bundle: HashMap<&'static str, StaticFile>) -> Self { Self { bundle } } } impl Deref for StaticResources { - type Target = HashMap<&'static str, StaticResource>; + type Target = HashMap<&'static str, StaticFile>; fn deref(&self) -> &Self::Target { &self.bundle diff --git a/src/web.rs b/src/web.rs index 63916cd3..787a7828 100644 --- a/src/web.rs +++ b/src/web.rs @@ -5,6 +5,8 @@ //! el módulo `http` para tipos de bajo nivel como `StatusCode`, `HeaderName` o `Method`. También //! ofrece utilidades para servir archivos estáticos, [`ServeDir`] y [`ServeEmbedded`]. +use crate::StaticFile; + use std::collections::HashMap; use std::convert::Infallible; use std::task::{Context, Poll}; @@ -25,10 +27,6 @@ pub use axum::response::{IntoResponse, Response}; // Operaciones HTTP para registrar rutas. pub use axum::routing::{delete, get, patch, post, put}; -// Servicios para archivos estáticos (disco y embebidos). -pub use pagetop_statics::StaticResource; -pub use tower_http::services::ServeDir; - // **< HttpRequest >******************************************************************************** /// Representa una petición HTTP. @@ -91,6 +89,11 @@ impl FromRequestParts for HttpRequest { } } +// **< ServeDir >*********************************************************************************** + +// Servicio para archivos estáticos en disco. +pub use tower_http::services::ServeDir; + // **< ServeEmbedded >****************************************************************************** /// Servicio para archivos estáticos embebidos en el binario. @@ -104,12 +107,12 @@ impl FromRequestParts for HttpRequest { /// recursos con un [`Arc`](std::sync::Arc) para evitar copias innecesarias. #[derive(Clone)] pub struct ServeEmbedded { - files: std::sync::Arc>, + files: std::sync::Arc>, } impl ServeEmbedded { /// Crea un nuevo servicio a partir del mapa de recursos embebidos generado por `build.rs`. - pub fn new(files: HashMap<&'static str, StaticResource>) -> Self { + pub fn new(files: HashMap<&'static str, StaticFile>) -> Self { Self { files: std::sync::Arc::new(files), }