murgamu 0.7.3

Murgamü is an NestJS-inspired web framework for Rust
Documentation
// Copyright (C) 2026  Emerson Alexandre Tieppo Jr. - Murgamü

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.

// You should have received a copy of the GNU Lesser General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pub mod config;
pub mod container;
pub mod core;
pub mod middleware;
pub mod mur_http;
pub mod router;
pub mod security;
pub mod server;
pub mod testing;
pub mod traits;
pub mod types;
pub mod utils;

pub use crate::container::builder::MurServiceContainerBuilder;
pub use crate::container::core::MurServiceContainer;
pub use crate::middleware::rate_limit::MurRateLimit;
pub use crate::middleware::rate_limit::RateLimitAlgorithm;
pub use crate::middleware::rate_limit::RateLimitConfig;
pub use crate::middleware::rate_limit::RateLimitKey;
pub use crate::middleware::timeout::MurTimeout;
pub use crate::middleware::timeout::TimeoutConfig;
pub use crate::mur_http::extractors::Param;
pub use crate::mur_http::multipart::MurFormField;
pub use crate::mur_http::multipart::MurMultipart;
pub use crate::mur_http::multipart::MurMultipartConfig;
pub use crate::mur_http::multipart::MurUploadedFile;
pub use ::http as http_crate;
pub use chrono;
pub use config::mur_current_env;
pub use config::mur_env;
pub use config::mur_env_is_true;
pub use config::mur_env_or;
pub use config::mur_env_parse;
pub use config::mur_env_parse_or;
pub use config::mur_is_development;
pub use config::mur_is_production;
pub use config::mur_is_test;
pub use config::mur_load_config;
pub use config::mur_load_config_required;
pub use config::source::MurConfigSource;
pub use config::source::MurEnvSource;
pub use config::source::MurFileSource;
pub use config::source::MurMemorySource;
pub use config::MurConfig;
pub use config::MurConfigBuilder;
pub use config::MurConfigError;
pub use config::MurConfigProvider;
pub use config::MurConfigProviderBuilder;
pub use config::MurConfigResult;
pub use config::MurConfigService;
pub use config::MurEnv;
pub use config::MurEnvProfile;
pub use config::MurFromConfig;
pub use container::injects::MurInjects;
pub use core::error::MurError;
pub use http_crate as http;
pub use hyper;
pub use mur_http::extractors::MurBody as HttpBody;
pub use mur_http::extractors::MurHeader as HttpHeader;
pub use mur_http::extractors::MurJson as HttpJson;
pub use mur_http::extractors::MurPath as HttpPath;
pub use mur_http::extractors::MurQuery as HttpQuery;
pub use mur_http::extractors::MurQueryParam as HttpQueryParam;
pub use mur_http::extractors::MurText as HttpText;
pub use mur_http::request::MurReq;
pub use mur_http::request::MurRequestContext as HttpRequestContext;
pub use mur_http::response::MurHttpResponse as HttpResponse;
pub use mur_http::response::MurIntoResponse as HttpIntoResponse;
pub use mur_http::response::MurResExt as HttpResExt;
pub use mur_http::response::MurResponseBuilder as HttpResponseBuilder;
pub use mur_http::MurBody;
pub use mur_http::MurHeader;
pub use mur_http::MurJson;
pub use mur_http::MurPath;
pub use mur_http::MurQuery;
pub use mur_http::MurQueryParam;
pub use mur_http::MurRequestContext;
pub use mur_http::MurText;
pub use murgamu_macros::api;
pub use murgamu_macros::body;
pub use murgamu_macros::controller;
pub use murgamu_macros::delete;
pub use murgamu_macros::get;
pub use murgamu_macros::guard;
pub use murgamu_macros::head;
pub use murgamu_macros::header;
pub use murgamu_macros::html_response;
pub use murgamu_macros::injectable;
pub use murgamu_macros::interceptor;
pub use murgamu_macros::json_response;
pub use murgamu_macros::main;
pub use murgamu_macros::module;
pub use murgamu_macros::no_content_response;
pub use murgamu_macros::ok_response;
pub use murgamu_macros::options;
pub use murgamu_macros::param;
pub use murgamu_macros::patch;
pub use murgamu_macros::post;
pub use murgamu_macros::put;
pub use murgamu_macros::query;
pub use murgamu_macros::route;
pub use murgamu_macros::service;
pub use murgamu_macros::text_response;
pub use murgamu_macros::validate;
pub use murgamu_macros::MurDto;
pub use murgamu_macros::MurEntity;
pub use router::MurRouteBuilder;
pub use router::MurRoutePattern;
pub use router::MurRouter;
pub use serde;
pub use serde_json;
pub use server::MurServer;
pub use server::MurServerConfig;
pub use server::MurServerRunner;
pub use tokio;
pub use traits::MurCloneController;
pub use traits::MurController;
pub use traits::MurDecorator;
pub use traits::MurExceptionFilter;
pub use traits::MurExtractor;
pub use traits::MurExtractorSync;
pub use traits::MurGuard;
pub use traits::MurGuardFuture;
pub use traits::MurGuardSync;
pub use traits::MurInjectable;
pub use traits::MurInterceptor;
pub use traits::MurInterceptorFuture;
pub use traits::MurMiddleware;
pub use traits::MurModule;
pub use traits::MurModuleConfig;
pub use traits::MurNext;
pub use traits::MurPipe;
pub use traits::MurPipeAsync;
pub use traits::MurProvider;
pub use traits::MurProviderScope;
pub use traits::MurService;
pub use traits::MurServiceFactory;
pub use types::controllers;
pub use types::IntoController;
pub use types::MurControllers;
pub use types::MurFuture;
pub use types::MurHttpResponse;
pub use types::MurIntoResponse;
pub use types::MurMainResult;
pub use types::MurMethod;
pub use types::MurPathParams;
pub use types::MurQueryParams;
pub use types::MurRequest;
pub use types::MurRes;
pub use types::MurResExt;
pub use types::MurResInfallible;
pub use types::MurResponse;
pub use types::MurResponseBuilder;
pub use types::MurRouteHandler;
pub use types::MurRouteInfo;
pub use types::MurServices;
pub use utils::mur_responder::MurResponder;

pub mod prelude {
	pub use crate::api;
	pub use crate::body;
	pub use crate::controller;
	pub use crate::controllers;
	pub use crate::delete;
	pub use crate::get;
	pub use crate::guard;
	pub use crate::head;
	pub use crate::header;
	pub use crate::html_response;
	pub use crate::injectable;
	pub use crate::interceptor;
	pub use crate::json_response;
	pub use crate::module;
	pub use crate::mur_current_env;
	pub use crate::mur_html;
	pub use crate::mur_http::sse::mur_sse_channel;
	pub use crate::mur_http::sse::mur_sse_data;
	pub use crate::mur_http::sse::mur_sse_event;
	pub use crate::mur_http::sse::mur_sse_headers;
	pub use crate::mur_http::sse::mur_sse_json;
	pub use crate::mur_http::sse::MurSse;
	pub use crate::mur_http::sse::MurSseChannel;
	pub use crate::mur_http::sse::MurSseConfig;
	pub use crate::mur_http::sse::MurSseConnection;
	pub use crate::mur_http::sse::MurSseEvent;
	pub use crate::mur_http::sse::MurSseReceiver;
	pub use crate::mur_http::sse::MurSseSendError;
	pub use crate::mur_http::sse::MurSseSender;
	pub use crate::mur_http::sse::MurSseStream;
	pub use crate::mur_is_development;
	pub use crate::mur_is_production;
	pub use crate::mur_json;
	pub use crate::mur_load_config;
	pub use crate::mur_text;
	pub use crate::no_content_response;
	pub use crate::ok_response;
	pub use crate::options;
	pub use crate::param;
	pub use crate::patch;
	pub use crate::post;
	pub use crate::put;
	pub use crate::query;
	pub use crate::route;
	pub use crate::service;
	pub use crate::text_response;
	pub use crate::validate;
	pub use crate::IntoController;
	pub use crate::MurBody;
	pub use crate::MurCloneController;
	pub use crate::MurConfig;
	pub use crate::MurConfigBuilder;
	pub use crate::MurConfigService;
	pub use crate::MurController;
	pub use crate::MurControllers;
	pub use crate::MurDecorator;
	pub use crate::MurDto;
	pub use crate::MurEntity;
	pub use crate::MurEnv;
	pub use crate::MurEnvProfile;
	pub use crate::MurError;
	pub use crate::MurExceptionFilter;
	pub use crate::MurExtractor;
	pub use crate::MurExtractorSync;
	pub use crate::MurFuture;
	pub use crate::MurGuard;
	pub use crate::MurGuardFuture;
	pub use crate::MurGuardSync;
	pub use crate::MurHeader;
	pub use crate::MurHttpResponse;
	pub use crate::MurInjectable;
	pub use crate::MurInjects;
	pub use crate::MurInterceptor;
	pub use crate::MurInterceptorFuture;
	pub use crate::MurIntoResponse;
	pub use crate::MurJson;
	pub use crate::MurMethod;
	pub use crate::MurMiddleware;
	pub use crate::MurModule;
	pub use crate::MurModuleConfig;
	pub use crate::MurNext;
	pub use crate::MurPath;
	pub use crate::MurPathParams;
	pub use crate::MurPipe;
	pub use crate::MurPipeAsync;
	pub use crate::MurProvider;
	pub use crate::MurProviderScope;
	pub use crate::MurQuery;
	pub use crate::MurQueryParam;
	pub use crate::MurQueryParams;
	pub use crate::MurReq;
	pub use crate::MurRequest;
	pub use crate::MurRequestContext;
	pub use crate::MurRes;
	pub use crate::MurResExt;
	pub use crate::MurResInfallible;
	pub use crate::MurResponse;
	pub use crate::MurResponseBuilder;
	pub use crate::MurRouteBuilder;
	pub use crate::MurRouteHandler;
	pub use crate::MurRouteInfo;
	pub use crate::MurRoutePattern;
	pub use crate::MurRouter;
	pub use crate::MurService;
	pub use crate::MurServiceContainer;
	pub use crate::MurServiceFactory;
	pub use http;
	pub use http::StatusCode;
	pub use hyper;
	pub use hyper::body::Bytes;
	pub use serde;
	pub use serde::{Deserialize, Serialize};
	pub use serde_json;
	pub use serde_json::json;
	pub use serde_urlencoded;
	pub use std::any::TypeId;
	pub use std::collections::HashMap;
	pub use std::sync::Arc;
	pub use tokio;
}

pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const NAME: &str = "Murgamü";

#[cfg(test)]
mod tests {
	use super::*;

	#[test]
	fn test_version() {
		assert!(!VERSION.is_empty());
	}

	#[test]
	fn test_name() {
		assert_eq!(NAME, "Murgamü");
	}
}