diff --git a/site/src/github.rs b/site/src/github.rs index 68ffc798c..2db38f9d6 100644 --- a/site/src/github.rs +++ b/site/src/github.rs @@ -1,7 +1,7 @@ pub mod client; pub mod comparison_summary; -use crate::api::github::{Commit, Issue}; +use crate::api::github::Commit; use crate::load::{SiteCtxt, TryCommit}; use serde::Deserialize; @@ -101,9 +101,14 @@ pub async fn rollup_pr_number( .then(|| issue.number)) } -pub async fn enqueue_sha(issue: Issue, ctxt: &SiteCtxt, commit: String) -> Result<(), String> { - let client = client::Client::from_ctxt(ctxt, issue.repository_url.clone()); - let commit_response = client +pub async fn enqueue_sha( + ctxt: &SiteCtxt, + main_client: &client::Client, + ci_client: &client::Client, + pr_number: u32, + commit: String, +) -> Result<(), String> { + let commit_response = ci_client .get_commit(&commit) .await .map_err(|e| e.to_string())?; @@ -118,25 +123,20 @@ pub async fn enqueue_sha(issue: Issue, ctxt: &SiteCtxt, commit: String) -> Resul let try_commit = TryCommit { sha: commit_response.sha.clone(), parent_sha: commit_response.parents[0].sha.clone(), - issue: issue.clone(), }; let queued = { let conn = ctxt.conn().await; - conn.pr_attach_commit( - issue.number, - &commit_response.sha, - &commit_response.parents[0].sha, - ) - .await + conn.pr_attach_commit(pr_number, &try_commit.sha, &try_commit.parent_sha) + .await }; if queued { let msg = format!( "Queued {} with parent {}, future [comparison URL]({}).", - commit_response.sha, - commit_response.parents[0].sha, + try_commit.sha, + try_commit.parent_sha, try_commit.comparison_url(), ); - client.post_comment(issue.number, msg).await; + main_client.post_comment(pr_number, msg).await; } Ok(()) } diff --git a/site/src/load.rs b/site/src/load.rs index 9343fd4da..dd0159ce8 100644 --- a/site/src/load.rs +++ b/site/src/load.rs @@ -10,7 +10,6 @@ use chrono::{Duration, Utc}; use log::error; use serde::{Deserialize, Serialize}; -use crate::api::github; use crate::db; use collector::{category::Category, Bound, MasterCommit}; use database::Date; @@ -60,11 +59,10 @@ impl MissingReason { } } -#[derive(Clone, Deserialize, Serialize, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq, Eq)] pub struct TryCommit { pub sha: String, pub parent_sha: String, - pub issue: github::Issue, } impl TryCommit { diff --git a/site/src/request_handlers/github.rs b/site/src/request_handlers/github.rs index 5fe9a877f..ff019bbaf 100644 --- a/site/src/request_handlers/github.rs +++ b/site/src/request_handlers/github.rs @@ -120,15 +120,23 @@ async fn handle_issue( issue: github::Issue, comment: github::Comment, ) -> ServerResult { + let main_client = client::Client::from_ctxt( + &ctxt, + "https://api.github.com/repos/rust-lang/rust".to_owned(), + ); + let ci_client = client::Client::from_ctxt( + &ctxt, + "https://api.github.com/repos/rust-lang-ci/rust".to_owned(), + ); if comment.body.contains(" homu: ") { if let Some(sha) = parse_homu_comment(&comment.body).await { - enqueue_sha(issue, &ctxt, sha).await?; + enqueue_sha(&ctxt, &main_client, &ci_client, issue.number, sha).await?; return Ok(github::Response); } } if comment.body.contains("@rust-timer ") { - return handle_rust_timer(ctxt, comment, issue).await; + return handle_rust_timer(ctxt, &main_client, &ci_client, comment, issue).await; } Ok(github::Response) @@ -136,17 +144,15 @@ async fn handle_issue( async fn handle_rust_timer( ctxt: Arc, + main_client: &client::Client, + ci_client: &client::Client, comment: github::Comment, issue: github::Issue, ) -> ServerResult { - let main_repo_client = client::Client::from_ctxt( - &ctxt, - "https://api.github.com/repos/rust-lang/rust".to_owned(), - ); if comment.author_association != github::Association::Owner && !get_authorized_users().await?.contains(&comment.user.id) { - main_repo_client + main_client .post_comment( issue.number, "Insufficient permissions to issue commands to rust-timer.", @@ -163,7 +169,7 @@ async fn handle_rust_timer( let conn = ctxt.conn().await; conn.queue_pr(issue.number, include, exclude, runs).await; } - main_repo_client + main_client .post_comment( issue.number, "Awaiting bors try build completion. @@ -183,7 +189,14 @@ async fn handle_rust_timer( let conn = ctxt.conn().await; conn.queue_pr(issue.number, include, exclude, runs).await; } - enqueue_sha(issue, &ctxt, commit.to_owned()).await?; + enqueue_sha( + &ctxt, + &main_client, + &ci_client, + issue.number, + commit.to_owned(), + ) + .await?; return Ok(github::Response); } }