Move the handling of events into a struct.

I am going to start parsing fields out of the json event objects, so it makes sense to give each event its own type to avoid the verbosity of parsing the values out of the json object every time they are needed.
This commit is contained in:
Tom Alexander
2022-05-12 08:37:15 -04:00
parent f7d2a2e57d
commit be9dcee422
4 changed files with 53 additions and 30 deletions

View File

@@ -1,4 +1,6 @@
mod github_endpoint_watcher;
mod githubctl;
mod pull_request_event;
pub use githubctl::GithubCtl;
pub use pull_request_event::PullRequestEvent;

View File

@@ -0,0 +1,21 @@
use crate::json_util::get_json_string;
pub struct PullRequestEvent<'a> {
original_event: &'a serde_json::Value,
}
impl<'a> PullRequestEvent<'a> {
pub fn new(original_event: &'a serde_json::Value) -> Result<Self, Box<dyn std::error::Error>> {
Ok(PullRequestEvent { original_event })
}
pub fn is_a(event: &'a serde_json::Value) -> Result<bool, Box<dyn std::error::Error>> {
let event_type = event.get("type").map(get_json_string);
match event_type {
Some(event_type_string) if event_type_string == "PullRequestEvent" => {
return Ok(true);
}
_ => Ok(false),
}
}
}