Switch to logging.

This commit is contained in:
Tom Alexander
2022-05-08 17:03:49 -04:00
parent 58aa8b249d
commit df00268d35
5 changed files with 117 additions and 11 deletions

View File

@@ -45,12 +45,12 @@ impl GithubEndpointWatcher {
.header("Accept", "application/vnd.github.v3+json");
if let Some(etag) = &self.etag {
let trimmed = etag.to_str()?.trim_matches('"');
println!("Setting etag to {}", trimmed);
info!("Setting etag to {}", trimmed);
request = request.header(reqwest::header::ETAG, trimmed);
}
if let Some(last_modified_at) = &self.last_modified_at {
// let trimmed = etag.to_str()?.trim_matches('"');
println!(
info!(
"Setting If-Modified-Since to {}",
last_modified_at.to_str()?
);
@@ -59,7 +59,7 @@ impl GithubEndpointWatcher {
self.sleep_until_next_poll().await?;
self.sleep_until_ratelimit().await?;
let request_started_at = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs();
println!("Hitting url {}", self.url);
info!("Hitting url {}", self.url);
let response = request.send().await?;
let headers = response.headers();
@@ -77,13 +77,18 @@ impl GithubEndpointWatcher {
if let reqwest::StatusCode::NOT_MODIFIED = response.status() {
self.etag = etag;
self.last_modified_at = last_modified_at;
let poll_interval_parsed: u64 = poll_interval.unwrap_or_else(|| {
info!("No poll interval returned, defaulting to 5 minute polling.");
300
});
self.next_poll_allowed = request_started_at + poll_interval_parsed;
return Ok(None);
} else {
let body = response.json::<serde_json::Value>().await?;
self.etag = etag;
self.last_modified_at = last_modified_at;
let poll_interval_parsed: u64 = poll_interval.unwrap_or_else(|| {
println!("No poll interval returned, defaulting to 5 minute polling.");
info!("No poll interval returned, defaulting to 5 minute polling.");
300
});
self.next_poll_allowed = request_started_at + poll_interval_parsed;

View File

@@ -81,21 +81,21 @@ impl<'a> GithubCtl<'a> {
let api_result = match endpoint_watcher.get_results().await {
Ok(result) => result,
Err(e) => {
println!("Failed to get results. {}", e);
error!("Failed to get results. {}", e);
return;
}
};
if let Some(serde_json::Value::Array(events)) = api_result {
for event in events {
if let Err(_) = event_stream.send(event).await {
println!("Receiver dropped.");
error!("Receiver dropped.");
return;
}
}
} else if let None = api_result {
println!("No new results available.");
info!("No new results available.");
} else {
println!("Unsupported JSON type.");
error!("Unsupported JSON type.");
}
}
});

View File

@@ -1,3 +1,6 @@
#[macro_use]
extern crate log;
mod githubctl;
use serde_json;
@@ -9,10 +12,11 @@ const REPO: &'static str = include_str!("../.repo");
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
pretty_env_logger::init();
let mut github = githubctl::GithubCtl::new(USERNAME, TOKEN)?;
github.watch_repo(ORG, REPO).await?;
loop {
let event = github.get_event().await?;
// println!("{}", serde_json::to_string(&event)?);
println!("{}", serde_json::to_string(&event)?);
}
}