refactor(backend): extract governor setup into a function
This commit is contained in:
@@ -78,31 +78,12 @@ async fn main() -> Result<()> {
|
||||
.layer(DefaultBodyLimit::max(BODY_LIMIT));
|
||||
|
||||
let user_repository = UserRepository::new(pool);
|
||||
let mut routes_auth = routes_auth(user_repository.clone());
|
||||
|
||||
if std::env::var("ENVIRONMENT").unwrap_or_default() != "test" {
|
||||
let governor_conf_auth = GovernorConfigBuilder::default()
|
||||
.per_second(4)
|
||||
.burst_size(2)
|
||||
.key_extractor(SmartIpKeyExtractor)
|
||||
.finish()
|
||||
.expect("failed to initialize rate limiter configurations");
|
||||
let governor_auth_limiter = governor_conf_auth.limiter().clone();
|
||||
let interval = Duration::from_secs(60);
|
||||
|
||||
std::thread::spawn(move || {
|
||||
loop {
|
||||
std::thread::sleep(interval);
|
||||
let len = governor_auth_limiter.len();
|
||||
if len > 0 {
|
||||
info!("rate limiting auth storage size: {len}");
|
||||
}
|
||||
governor_auth_limiter.retain_recent();
|
||||
}
|
||||
});
|
||||
|
||||
routes_auth = routes_auth.layer(GovernorLayer::new(governor_conf_auth));
|
||||
}
|
||||
let routes_auth = routes_auth(user_repository.clone());
|
||||
let routes_auth = if std::env::var("ENVIRONMENT").unwrap_or_default() == "test" {
|
||||
routes_auth
|
||||
} else {
|
||||
apply_governor(routes_auth)
|
||||
};
|
||||
|
||||
let mut openapi = AuthApi::openapi();
|
||||
openapi.merge(FileApi::openapi());
|
||||
@@ -141,3 +122,27 @@ async fn main() -> Result<()> {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn apply_governor(routes_auth: Router) -> Router {
|
||||
let governor_conf_auth = GovernorConfigBuilder::default()
|
||||
.per_second(4)
|
||||
.burst_size(2)
|
||||
.key_extractor(SmartIpKeyExtractor)
|
||||
.finish()
|
||||
.expect("failed to initialize rate limiter configurations");
|
||||
let governor_auth_limiter = governor_conf_auth.limiter().clone();
|
||||
let interval = Duration::from_secs(60);
|
||||
|
||||
std::thread::spawn(move || {
|
||||
loop {
|
||||
std::thread::sleep(interval);
|
||||
let len = governor_auth_limiter.len();
|
||||
if len > 0 {
|
||||
info!("rate limiting auth storage size: {len}");
|
||||
}
|
||||
governor_auth_limiter.retain_recent();
|
||||
}
|
||||
});
|
||||
|
||||
routes_auth.layer(GovernorLayer::new(governor_conf_auth))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user