added rate limiting layer to activate, added author nested router

This commit is contained in:
Wyatt J. Miller 2024-09-28 01:49:40 -04:00
parent 65e058b3c1
commit c508f78043

View File

@ -55,25 +55,25 @@ async fn main() {
)
.init();
if std::env::var("RUST_ENV").unwrap_or_else(|_| "development".to_string()) != "development" {
println!("we're not in development, starting up the rate limiter");
let governor_conf = Arc::new(
GovernorConfigBuilder::default()
.per_second(2)
.burst_size(5)
.finish()
.unwrap(),
);
// if std::env::var("RUST_ENV").unwrap_or_else(|_| "development".to_string()) != "development" {
println!("we're not in development, starting up the rate limiter");
let governor_conf = Arc::new(
GovernorConfigBuilder::default()
.per_second(2)
.burst_size(5)
.finish()
.unwrap(),
);
let governor_limiter = governor_conf.limiter().clone();
let interval = Duration::from_secs(60);
// a separate background task to clean up
std::thread::spawn(move || loop {
std::thread::sleep(interval);
tracing::info!("rate limiting storage size: {}", governor_limiter.len());
governor_limiter.retain_recent();
});
}
let governor_limiter = governor_conf.limiter().clone();
let interval = Duration::from_secs(60);
// a separate background task to clean up
std::thread::spawn(move || loop {
std::thread::sleep(interval);
tracing::info!("rate limiting storage size: {}", governor_limiter.len());
governor_limiter.retain_recent();
});
// }
// grabbing the database url from our env variables
let db_connection_str = std::env::var("DATABASE_URL")
@ -93,15 +93,22 @@ async fn main() {
let app = Router::new()
.nest("/", routes::root::RootRoute::routes())
.nest("/posts", routes::posts::PostsRoute::routes(&app_state))
.nest(
"/comments",
routes::comments::CommentsRoute::routes(&app_state),
)
.nest(
"/authors",
routes::authors::AuthorsRoute::routes(&app_state),
)
.layer(
TraceLayer::new_for_http()
.make_span_with(trace::DefaultMakeSpan::new().level(tracing::Level::INFO))
.on_response(trace::DefaultOnResponse::new().level(tracing::Level::INFO)),
)
.nest(
"/comments",
routes::comments::CommentsRoute::routes(&app_state),
);
.layer(GovernorLayer {
config: governor_conf,
});
// run it with hyper
let listener = TcpListener::bind("0.0.0.0:3000").await.unwrap();