You've already forked AstralRinth
forked from didirus/AstralRinth
Fix filenames, dep route again
This commit is contained in:
@@ -112,7 +112,7 @@ pub async fn dependency_list(
|
||||
|
||||
let dependencies = sqlx::query!(
|
||||
"
|
||||
SELECT d.dependency_id, vd.mod_id
|
||||
SELECT d.dependency_id, vd.mod_id, d.mod_dependency_id
|
||||
FROM versions v
|
||||
INNER JOIN dependencies d ON d.dependent_id = v.id
|
||||
INNER JOIN versions vd ON d.dependency_id = vd.id
|
||||
@@ -126,18 +126,31 @@ pub async fn dependency_list(
|
||||
(
|
||||
x.dependency_id.map(database::models::VersionId),
|
||||
database::models::ProjectId(x.mod_id),
|
||||
x.mod_dependency_id.map(database::models::ProjectId),
|
||||
)
|
||||
}))
|
||||
})
|
||||
.try_collect::<Vec<(
|
||||
Option<database::models::VersionId>,
|
||||
database::models::ProjectId,
|
||||
Option<database::models::ProjectId>,
|
||||
)>>()
|
||||
.await?;
|
||||
|
||||
let (projects_result, versions_result) = futures::join!(
|
||||
database::Project::get_many_full(
|
||||
dependencies.iter().map(|x| x.1).collect(),
|
||||
dependencies
|
||||
.iter()
|
||||
.map(|x| if x.0.is_none() {
|
||||
if let Some(mod_dependency_id) = x.2 {
|
||||
mod_dependency_id
|
||||
} else {
|
||||
x.1
|
||||
}
|
||||
} else {
|
||||
x.1
|
||||
})
|
||||
.collect(),
|
||||
&**pool,
|
||||
),
|
||||
database::Version::get_many_full(
|
||||
@@ -146,15 +159,21 @@ pub async fn dependency_list(
|
||||
)
|
||||
);
|
||||
|
||||
let projects = projects_result?
|
||||
let mut projects = projects_result?
|
||||
.into_iter()
|
||||
.map(models::projects::Project::from)
|
||||
.collect::<Vec<_>>();
|
||||
let versions = versions_result?
|
||||
let mut versions = versions_result?
|
||||
.into_iter()
|
||||
.map(models::projects::Version::from)
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
projects.sort_by(|a, b| b.published.cmp(&a.published));
|
||||
projects.dedup_by(|a, b| a.id == b.id);
|
||||
|
||||
versions.sort_by(|a, b| b.date_published.cmp(&a.date_published));
|
||||
versions.dedup_by(|a, b| a.id == b.id);
|
||||
|
||||
Ok(HttpResponse::Ok().json(DependencyInfo { projects, versions }))
|
||||
} else {
|
||||
Ok(HttpResponse::NotFound().body(""))
|
||||
|
||||
@@ -675,30 +675,29 @@ pub async fn upload_file(
|
||||
)
|
||||
.await?;
|
||||
|
||||
let file_name_encode = format!(
|
||||
let file_path_encode = format!(
|
||||
"data/{}/versions/{}/{}",
|
||||
project_id,
|
||||
version_number,
|
||||
urlencoding::encode(file_name)
|
||||
);
|
||||
let file_name = format!(
|
||||
let file_path = format!(
|
||||
"data/{}/versions/{}/{}",
|
||||
project_id, version_number, &file_name
|
||||
);
|
||||
|
||||
let upload_data = file_host
|
||||
.upload_file(content_type, &file_name, data.freeze())
|
||||
.upload_file(content_type, &file_path, data.freeze())
|
||||
.await?;
|
||||
|
||||
uploaded_files.push(UploadedFile {
|
||||
file_id: upload_data.file_id,
|
||||
file_name: file_name_encode,
|
||||
file_name: file_path,
|
||||
});
|
||||
|
||||
// TODO: Malware scan + file validation
|
||||
version_files.push(models::version_item::VersionFileBuilder {
|
||||
filename: file_name.to_string(),
|
||||
url: format!("{}/{}", cdn_url, upload_data.file_name),
|
||||
url: format!("{}/{}", cdn_url, file_path_encode),
|
||||
hashes: vec![
|
||||
models::version_item::HashBuilder {
|
||||
algorithm: "sha1".to_string(),
|
||||
|
||||
@@ -72,8 +72,9 @@ pub async fn send_discord_webhook(
|
||||
|
||||
let embed = DiscordEmbed {
|
||||
url: format!(
|
||||
"{}/mod/{}",
|
||||
"{}/{}/{}",
|
||||
dotenv::var("SITE_URL").unwrap_or_default(),
|
||||
project.project_type,
|
||||
project
|
||||
.clone()
|
||||
.slug
|
||||
@@ -82,7 +83,7 @@ pub async fn send_discord_webhook(
|
||||
title: project.title,
|
||||
description: project.description,
|
||||
timestamp: project.published,
|
||||
color: 0x5DA545,
|
||||
color: 0x1bd96a,
|
||||
fields,
|
||||
image: DiscordEmbedImage {
|
||||
url: project.icon_url,
|
||||
|
||||
Reference in New Issue
Block a user