job: move blacklist processing to request
This commit is contained in:
parent
8e7e0e9a84
commit
ff90b5fb2d
|
@ -190,13 +190,6 @@ impl Job {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn run(&mut self, homedir: &Path, config: &GlobalSettings) -> anyhow::Result<()> {
|
pub(crate) fn run(&mut self, homedir: &Path, config: &GlobalSettings) -> anyhow::Result<()> {
|
||||||
if config
|
|
||||||
.blacklist
|
|
||||||
.iter()
|
|
||||||
.any(|re| re.is_match(&self.repo.full_name))
|
|
||||||
{
|
|
||||||
return Ok(());
|
|
||||||
}
|
|
||||||
let local_path = homedir.join(&self.repo.full_name);
|
let local_path = homedir.join(&self.repo.full_name);
|
||||||
assert!(local_path.is_absolute());
|
assert!(local_path.is_absolute());
|
||||||
self.local_path = Some(local_path);
|
self.local_path = Some(local_path);
|
||||||
|
|
16
src/main.rs
16
src/main.rs
|
@ -29,7 +29,19 @@ struct JobSender(Mutex<Sender<Job>>);
|
||||||
struct Secret(String);
|
struct Secret(String);
|
||||||
|
|
||||||
#[post("/", data = "<payload>")]
|
#[post("/", data = "<payload>")]
|
||||||
fn gitea_webhook(payload: SignedJson<GiteaWebHook>, sender: State<JobSender>) -> Status {
|
fn gitea_webhook(
|
||||||
|
payload: SignedJson<GiteaWebHook>,
|
||||||
|
sender: State<JobSender>,
|
||||||
|
config: State<GlobalSettings>,
|
||||||
|
) -> Status {
|
||||||
|
if config
|
||||||
|
.blacklist
|
||||||
|
.iter()
|
||||||
|
.any(|re| re.is_match(&payload.repository.full_name))
|
||||||
|
{
|
||||||
|
return Status::Ok;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
let sender = sender.0.lock().unwrap();
|
let sender = sender.0.lock().unwrap();
|
||||||
let repo = &payload.repository;
|
let repo = &payload.repository;
|
||||||
|
@ -74,6 +86,7 @@ fn main() -> anyhow::Result<()> {
|
||||||
.expect("please provide a secret, otherwise anyone can send you a malicious webhook");
|
.expect("please provide a secret, otherwise anyone can send you a malicious webhook");
|
||||||
|
|
||||||
let config = parse_config(homedir.clone())?;
|
let config = parse_config(homedir.clone())?;
|
||||||
|
let config_state = config.clone();
|
||||||
|
|
||||||
thread::spawn(move || {
|
thread::spawn(move || {
|
||||||
repo_updater(receiver, homedir, config);
|
repo_updater(receiver, homedir, config);
|
||||||
|
@ -83,6 +96,7 @@ fn main() -> anyhow::Result<()> {
|
||||||
.mount("/", routes![gitea_webhook])
|
.mount("/", routes![gitea_webhook])
|
||||||
.manage(JobSender(Mutex::new(sender)))
|
.manage(JobSender(Mutex::new(sender)))
|
||||||
.manage(Secret(secret))
|
.manage(Secret(secret))
|
||||||
|
.manage(config_state)
|
||||||
.launch();
|
.launch();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -2,7 +2,7 @@ use serde::Deserialize;
|
||||||
|
|
||||||
pub(crate) type RepoUrl = String; // FIXME: probably needs a better type than this
|
pub(crate) type RepoUrl = String; // FIXME: probably needs a better type than this
|
||||||
|
|
||||||
#[derive(Default, Deserialize)]
|
#[derive(Clone, Default, Deserialize)]
|
||||||
pub(crate) struct GlobalSettings {
|
pub(crate) struct GlobalSettings {
|
||||||
/// List of remote stems to use when no `.lohr` file is found
|
/// List of remote stems to use when no `.lohr` file is found
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
|
Loading…
Reference in a new issue