mirror of
https://github.com/ALEZ-DEV/Babylonia-terminal.git
synced 2025-12-15 17:08:51 +00:00
delete unused file
This commit is contained in:
parent
9612771024
commit
e671b1eb79
@ -1,142 +0,0 @@
|
||||
use std::{path::PathBuf, sync::Arc};
|
||||
|
||||
use downloader::progress::Reporter;
|
||||
use downloader::Downloader as FileDownloader;
|
||||
use reqwest::header::{self, USER_AGENT};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tar::Header;
|
||||
//use tokio::{fs::File, io};
|
||||
|
||||
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct GithubRelease {
|
||||
pub url: String,
|
||||
#[serde(rename = "assets_url")]
|
||||
pub assets_url: String,
|
||||
#[serde(rename = "tag_name")]
|
||||
pub tag_name: String,
|
||||
#[serde(rename = "target_commitish")]
|
||||
pub target_commitish: String,
|
||||
pub name: String,
|
||||
pub assets: Vec<Asset>,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct Asset {
|
||||
pub url: String,
|
||||
pub id: i64,
|
||||
#[serde(rename = "node_id")]
|
||||
pub node_id: String,
|
||||
pub name: String,
|
||||
#[serde(rename = "content_type")]
|
||||
pub content_type: String,
|
||||
pub state: String,
|
||||
pub size: i64,
|
||||
#[serde(rename = "download_count")]
|
||||
pub download_count: i64,
|
||||
#[serde(rename = "created_at")]
|
||||
pub created_at: String,
|
||||
#[serde(rename = "updated_at")]
|
||||
pub updated_at: String,
|
||||
#[serde(rename = "browser_download_url")]
|
||||
pub browser_download_url: String,
|
||||
}
|
||||
|
||||
pub struct ComponentsDownloader;
|
||||
|
||||
static GITHUB_TOKEN: &'static str = "Bearer <GITHUB_TOKEN>"; //this token can only read public repo
|
||||
|
||||
impl ComponentsDownloader {
|
||||
fn get_client() -> reqwest::Client {
|
||||
let mut headers = header::HeaderMap::new();
|
||||
headers.insert(
|
||||
"Authorization",
|
||||
header::HeaderValue::from_static(GITHUB_TOKEN),
|
||||
);
|
||||
|
||||
reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.default_headers(headers)
|
||||
.build()
|
||||
.expect("Failed to build https client")
|
||||
}
|
||||
|
||||
async fn get_latest_github_release(
|
||||
user: &str,
|
||||
repo_name: &str,
|
||||
) -> anyhow::Result<Vec<GithubRelease>> {
|
||||
let response = ComponentsDownloader::get_client()
|
||||
.get(format!(
|
||||
"https://api.github.com/repos/{}/{}/releases",
|
||||
user, repo_name
|
||||
))
|
||||
.send()
|
||||
.await?;
|
||||
let body = response.text().await?;
|
||||
|
||||
let releases: Vec<GithubRelease> = serde_json::from_str(&body)?;
|
||||
Ok(releases)
|
||||
}
|
||||
|
||||
pub async fn download_latest_wine<P>(
|
||||
output_dir: &PathBuf,
|
||||
progress: Option<Arc<P>>,
|
||||
) -> anyhow::Result<PathBuf>
|
||||
where
|
||||
P: Reporter + 'static, //the 'static is something to change, I just made it like this for test prupose
|
||||
{
|
||||
let releases =
|
||||
//ComponentsDownloader::get_latest_github_release("Kron4ek", "Wine-Builds").await?;
|
||||
ComponentsDownloader::get_latest_github_release("GloriousEggroll", "wine-ge-custom").await?;
|
||||
|
||||
let asset = releases[0]
|
||||
.assets
|
||||
.get(1)
|
||||
.expect("Asset not found in the github release");
|
||||
|
||||
let mut downloader = FileDownloader::builder()
|
||||
.download_folder(output_dir)
|
||||
.parallel_requests(1)
|
||||
.build()?;
|
||||
|
||||
let mut dl = downloader::Download::new(&asset.browser_download_url);
|
||||
if let Some(p) = progress {
|
||||
dl = dl.progress(p);
|
||||
}
|
||||
|
||||
let _result = downloader.async_download(&[dl]).await?;
|
||||
let file_location = output_dir.join(asset.name.clone());
|
||||
|
||||
Ok(file_location)
|
||||
}
|
||||
|
||||
pub async fn download_latest_dxvk<P>(
|
||||
output_dir: &PathBuf,
|
||||
progress: Option<Arc<P>>,
|
||||
) -> anyhow::Result<PathBuf>
|
||||
where
|
||||
P: Reporter + 'static,
|
||||
{
|
||||
let releases = ComponentsDownloader::get_latest_github_release("doitsujin", "dxvk").await?;
|
||||
|
||||
let asset = releases[0]
|
||||
.assets
|
||||
.first()
|
||||
.expect("Asset not found in the github release");
|
||||
|
||||
let mut downloader = FileDownloader::builder()
|
||||
.download_folder(output_dir)
|
||||
.parallel_requests(1)
|
||||
.build()?;
|
||||
let mut dl = downloader::Download::new(&asset.browser_download_url);
|
||||
if let Some(p) = progress {
|
||||
dl = dl.progress(p);
|
||||
}
|
||||
|
||||
let _result = downloader.async_download(&[dl]).await?;
|
||||
let file_location = output_dir.join(asset.name.clone());
|
||||
|
||||
Ok(file_location)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user