mirror of
https://codeberg.org/demostf/backup.git
synced 2026-06-03 09:54:18 +02:00
bumb dependencies + docker ci
This commit is contained in:
parent
114c4175c9
commit
34cdba6d82
7 changed files with 178 additions and 270 deletions
11
src/api.rs
11
src/api.rs
|
|
@ -73,6 +73,7 @@ pub struct ListParams {
|
|||
}
|
||||
|
||||
impl ListParams {
|
||||
#[allow(dead_code)]
|
||||
pub fn with_backend(self, backend: impl ToString) -> Self {
|
||||
ListParams {
|
||||
backend: Some(backend.to_string()),
|
||||
|
|
@ -86,15 +87,15 @@ impl ListParams {
|
|||
}
|
||||
|
||||
pub fn list_demos(params: ListParams, page: u32) -> Result<Vec<Demo>, Error> {
|
||||
let mut req = ureq::get("https://api.demos.tf/demos");
|
||||
req.query("page", &format!("{}", page))
|
||||
let mut req = ureq::get("https://api.demos.tf/demos")
|
||||
.query("page", &format!("{}", page))
|
||||
.query("order", &format!("{}", params.order));
|
||||
|
||||
if let Some(backend) = params.backend.as_ref() {
|
||||
req.query("backend", backend);
|
||||
req = req.query("backend", backend);
|
||||
}
|
||||
|
||||
let resp = req.call();
|
||||
let resp = req.call()?;
|
||||
|
||||
Ok(resp.into_json_deserialize()?)
|
||||
Ok(resp.into_json()?)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ impl Backup {
|
|||
}
|
||||
|
||||
fn backup_demo(&self, name: &str, url: &str, hash: [u8; 16]) -> Result<(), Error> {
|
||||
let resp = ureq::get(url).call();
|
||||
let resp = ureq::get(url).call()?;
|
||||
|
||||
let digest = self.store.store(name, &mut resp.into_reader())?;
|
||||
|
||||
|
|
@ -31,7 +31,7 @@ impl Backup {
|
|||
let demos = list_demos(ListParams::default().with_order(ListOrder::Ascending), page)?;
|
||||
|
||||
for demo in demos.iter() {
|
||||
if demo.url != "" {
|
||||
if !demo.url.is_empty() {
|
||||
let name = demo.url.rsplit('/').next().unwrap();
|
||||
println!("{} {}", demo.id, name);
|
||||
if !self.store.exists(name) {
|
||||
|
|
|
|||
|
|
@ -15,10 +15,18 @@ mod api;
|
|||
pub enum Error {
|
||||
#[error("Request failed: {0}")]
|
||||
Request(#[from] std::io::Error),
|
||||
#[error("Request failed: {0}")]
|
||||
UReq(Box<ureq::Error>),
|
||||
#[error("MD5 digest mismatch for downloaded demo, expected {expected:?}, received {got:?}")]
|
||||
DigestMismatch { expected: [u8; 16], got: [u8; 16] },
|
||||
}
|
||||
|
||||
impl From<ureq::Error> for Error {
|
||||
fn from(e: ureq::Error) -> Self {
|
||||
Error::UReq(Box::new(e))
|
||||
}
|
||||
}
|
||||
|
||||
fn main() -> Result<(), MainError> {
|
||||
let mut args: HashMap<_, _> = dotenv::vars().collect();
|
||||
let store = Store::new(args.get("STORAGE_ROOT").expect("no STORAGE_ROOT set"));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue