swarm-controller: read review rules through the git tree and blob API
The rules file is now read with the existing forgejo-api client: the
commit's root tree, then the `.hyperhive` tree, then the
`review-classifier.{yml,json}` blob, base64-decoded. Every request takes
single-segment path parameters, so nothing depends on how a nested path
is escaped, and the controller keeps one HTTP transport to the forge.
The second reqwest client, `Client::with_token` and `raw_file_url` are
gone.
A tree the forge truncated is an error, not a missing file. A 404 on a
tree or blob doesn't come back as a forge 404, so only the repo lookup's
404 reads as "no such repo".
The `is_repo_not_found` doc comment is back on its function.
Part of #5096.
This commit is contained in:
parent
2b1573c2ba
commit
d52e97f376
5 changed files with 202 additions and 147 deletions
|
|
@ -206,6 +206,7 @@ mod tests {
|
|||
|
||||
use axum::extract::{Path, State};
|
||||
use axum::http::{StatusCode, header::CONTENT_TYPE};
|
||||
use forgejo_api::{Auth, Forgejo};
|
||||
|
||||
use super::*;
|
||||
|
||||
|
|
@ -254,7 +255,8 @@ mod tests {
|
|||
let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();
|
||||
let url = url::Url::parse(&format!("http://{}/", listener.local_addr().unwrap())).unwrap();
|
||||
tokio::spawn(async move { axum::serve(listener, app).await });
|
||||
(Client::with_token("stub-token", url).unwrap(), docs)
|
||||
let api = Forgejo::new(Auth::Token("stub-token"), url.clone()).unwrap();
|
||||
(Client { api, url }, docs)
|
||||
}
|
||||
|
||||
async fn check(
|
||||
|
|
|
|||
|
|
@ -113,6 +113,8 @@ mod tests {
|
|||
use std::collections::BTreeMap;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use forgejo_api::{Auth, Forgejo};
|
||||
|
||||
use super::super::agent_token::{AGENT_TOKEN_NAME, MintReason};
|
||||
use super::*;
|
||||
|
||||
|
|
@ -227,7 +229,8 @@ mod tests {
|
|||
let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();
|
||||
let url = url::Url::parse(&format!("http://{}/", listener.local_addr().unwrap())).unwrap();
|
||||
tokio::spawn(async move { axum::serve(listener, app).await });
|
||||
(Client::with_token("stub-token", url).unwrap(), deletes)
|
||||
let api = Forgejo::new(Auth::Token("stub-token"), url.clone()).unwrap();
|
||||
(Client { api, url }, deletes)
|
||||
}
|
||||
|
||||
const MIX: [&str; 5] = [
|
||||
|
|
|
|||
Loading…
Reference in a new issue