use crate::backend;
use crate::channel;
use crate::constants;
use crate::github::event::GithubEvent;
use crate::queue;
use crate::time_spent;
use anyhow::Result;
pub fn produce_message_from(event: &GithubEvent) -> Result<()> {
let action = event.get_action();
if action == "deleted" {
return Ok(());
}
if let Some(comment) = event.get_code() {
if !constants::contain_keywords(comment) {
return Ok(());
}
let mut msg;
if constants::contains_time_spent_pattern(comment) && event.get_action() != "edited" {
let tp = time_spent::get_time_spent_from_str(comment, event);
msg = channel::Message::TimeSpent(tp);
let s = queue::get_sender();
let guard = s.lock();
let sender = guard.expect("get sender fail."); sender.send(msg)?;
}
if constants::contains_webhook_gateway_patten(comment) {
let task = backend::get_backend_task_from_str(
comment,
event.get_repo_name().to_string(),
event.get_pr_number(),
event.get_user_name(),
)?;
msg = channel::Message::BackendTask(task);
let s = queue::get_sender();
let guard = s.lock();
let sender = guard.expect("get sender fail."); sender.send(msg)?;
}
}
Ok(())
}