added response_timer
This commit is contained in:
parent
44793eb8d4
commit
95b908836e
2 changed files with 37 additions and 0 deletions
|
|
@ -7,6 +7,9 @@ async fn main() -> std::result::Result<(), rocket::Error> {
|
||||||
// Build server
|
// Build server
|
||||||
let rocket_builder = rocket::build();
|
let rocket_builder = rocket::build();
|
||||||
|
|
||||||
|
// Response timer
|
||||||
|
let rocket_builder = response_timer::ResponseTimer::rocket(rocket_builder);
|
||||||
|
|
||||||
// Database
|
// Database
|
||||||
let rocket_builder = database::Database::rocket(rocket_builder);
|
let rocket_builder = database::Database::rocket(rocket_builder);
|
||||||
|
|
||||||
|
|
|
||||||
34
crates/ezidam/src/response_timer.rs
Normal file
34
crates/ezidam/src/response_timer.rs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
// Code stolen from https://crates.io/crates/rocket-response-time
|
||||||
|
// Copyright Thomas Parsley <info@thomasparsley.cz>, MIT License
|
||||||
|
|
||||||
|
use rocket::fairing::{Fairing, Kind};
|
||||||
|
use rocket::{Build, Request, Rocket};
|
||||||
|
|
||||||
|
pub struct ResponseTimer {}
|
||||||
|
|
||||||
|
impl ResponseTimer {
|
||||||
|
pub fn rocket(rocket_builder: Rocket<Build>) -> Rocket<Build> {
|
||||||
|
rocket_builder.attach(Self {})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rocket::async_trait]
|
||||||
|
impl Fairing for ResponseTimer {
|
||||||
|
fn info(&self) -> rocket::fairing::Info {
|
||||||
|
rocket::fairing::Info {
|
||||||
|
name: "ResponseTimer",
|
||||||
|
kind: Kind::Request | Kind::Response,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn on_request(&self, request: &mut Request<'_>, _: &mut rocket::Data<'_>) {
|
||||||
|
request.local_cache(std::time::Instant::now);
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn on_response<'r>(&self, request: &'r Request<'_>, response: &mut rocket::Response<'r>) {
|
||||||
|
let start_time = request.local_cache(std::time::Instant::now);
|
||||||
|
let end_time = start_time.elapsed();
|
||||||
|
|
||||||
|
response.set_raw_header("X-Response-Time", format!("{end_time:.2?}"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue