Added RTT function
This commit is contained in:
parent
01757eb4da
commit
39d932c949
5 changed files with 23 additions and 9 deletions
|
@ -35,6 +35,7 @@
|
|||
endpoints:[
|
||||
(label: "The code doesn't match!", endpoint: "http://example.com/", code: 204),
|
||||
(label: "The body doesn't match!", endpoint: "http://example.com/", body: "asdf"),
|
||||
(label: "Slow reponse time", endpoint: "http://slowwly.robertomurray.co.uk/delay/2000/url/"),
|
||||
(label: "Here's an error:", endpoint: "https://some-invalid-website.arpa")
|
||||
]
|
||||
),
|
||||
|
|
|
@ -68,10 +68,11 @@
|
|||
<div class="info">
|
||||
<h3>{{ status.endpoint }}</h3>
|
||||
<div class="spacer"></div>
|
||||
<a href="{{ status.location }}" target="_blank">{{ status.location }}</a>
|
||||
{% if status.status != 2 %}<p>{{ status.rtt }}</p>{% endif %}
|
||||
</div>
|
||||
<a href="{{ status.location }}" target="_blank">{{ status.location }}</a>
|
||||
{% if status.error %}<p class="error-msg">{{ status.error }}</p>{% endif %}
|
||||
</main>
|
||||
</main>
|
||||
</section>
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
|
|
@ -12,24 +12,27 @@ pub struct EndpointStatus {
|
|||
pub status: u8,
|
||||
pub location: String,
|
||||
pub endpoint: String,
|
||||
pub rtt: Option<String>,
|
||||
pub error: Option<String>,
|
||||
}
|
||||
|
||||
impl EndpointStatus {
|
||||
pub fn ok(location: String, endpoint: String) -> Self {
|
||||
pub fn ok(location: String, endpoint: String, rtt: String) -> Self {
|
||||
EndpointStatus {
|
||||
status: 0,
|
||||
location,
|
||||
endpoint,
|
||||
rtt: Some(rtt),
|
||||
error: None,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn warn(location: String, endpoint: String, error: Option<String>) -> Self {
|
||||
pub fn warn(location: String, endpoint: String, rtt: String, error: Option<String>) -> Self {
|
||||
EndpointStatus {
|
||||
status: 1,
|
||||
location,
|
||||
endpoint,
|
||||
rtt: Some(rtt),
|
||||
error,
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +42,7 @@ impl EndpointStatus {
|
|||
status: 2,
|
||||
location,
|
||||
endpoint,
|
||||
rtt: None,
|
||||
error,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#![forbid(unsafe_code)]
|
||||
|
||||
extern crate actix;
|
||||
extern crate actix_web;
|
||||
extern crate chrono;
|
||||
|
|
|
@ -3,7 +3,7 @@ use crate::{
|
|||
handlers::{EndpointStatus, StatusGroup},
|
||||
State,
|
||||
};
|
||||
use chrono::prelude::Utc;
|
||||
use chrono::Utc;
|
||||
use reqwest::{Client, RedirectPolicy, Url, UrlError};
|
||||
use ring::{
|
||||
digest::{digest, SHA256},
|
||||
|
@ -51,8 +51,14 @@ fn get_result(
|
|||
) -> EndpointStatus {
|
||||
let (label, path, port, code, body) = get_endpoint_info(endpoint.clone());
|
||||
let url = get_url(&website_conf.base, &path, port).expect("reading config");
|
||||
let ping_start = Utc::now();
|
||||
let ping_result = client.get(&url).send();
|
||||
|
||||
let duration = Utc::now() - ping_start;
|
||||
let duration = if duration.num_seconds() > 0 {
|
||||
format!("{}s", duration.num_milliseconds() as f64 / 1000.)
|
||||
} else {
|
||||
format!("{}ms", duration.num_milliseconds())
|
||||
};
|
||||
match ping_result {
|
||||
Ok(mut res) => {
|
||||
let res_body = res.text().expect("could not get body of request");
|
||||
|
@ -90,14 +96,14 @@ fn get_result(
|
|||
}
|
||||
|
||||
if error.is_some() {
|
||||
EndpointStatus::warn(url, label, error)
|
||||
EndpointStatus::warn(url, label, duration, error)
|
||||
} else {
|
||||
EndpointStatus::ok(url, label)
|
||||
EndpointStatus::ok(url, label, duration)
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
if let Some(true) = endpoint.should_err {
|
||||
EndpointStatus::ok(url, label)
|
||||
EndpointStatus::ok(url, label, duration)
|
||||
} else {
|
||||
EndpointStatus::error(url, label, Some(format!("{}", e)))
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue