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
|
||||
let rocket_builder = rocket::build();
|
||||
|
||||
// Response timer
|
||||
let rocket_builder = response_timer::ResponseTimer::rocket(rocket_builder);
|
||||
|
||||
// Database
|
||||
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