You've already forked AstralRinth
forked from didirus/AstralRinth
@@ -2,7 +2,7 @@ use crate::{models::v2::projects::LegacySideType, util::env::parse_strings_from_
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use validator::Validate;
|
use validator::Validate;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Eq, PartialEq)]
|
#[derive(Serialize, Deserialize, Validate, Eq, PartialEq, Debug)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct PackFormat {
|
pub struct PackFormat {
|
||||||
pub game: String,
|
pub game: String,
|
||||||
@@ -18,7 +18,7 @@ pub struct PackFormat {
|
|||||||
pub dependencies: std::collections::HashMap<PackDependency, String>,
|
pub dependencies: std::collections::HashMap<PackDependency, String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Eq, PartialEq)]
|
#[derive(Serialize, Deserialize, Validate, Eq, PartialEq, Debug)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct PackFile {
|
pub struct PackFile {
|
||||||
pub path: String,
|
pub path: String,
|
||||||
@@ -54,7 +54,7 @@ fn validate_download_url(values: &[String]) -> Result<(), validator::ValidationE
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Eq, PartialEq, Hash)]
|
#[derive(Serialize, Deserialize, Eq, PartialEq, Hash, Debug)]
|
||||||
#[serde(rename_all = "camelCase", from = "String")]
|
#[serde(rename_all = "camelCase", from = "String")]
|
||||||
pub enum PackFileHash {
|
pub enum PackFileHash {
|
||||||
Sha1,
|
Sha1,
|
||||||
@@ -72,14 +72,14 @@ impl From<String> for PackFileHash {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Eq, PartialEq, Hash)]
|
#[derive(Serialize, Deserialize, Eq, PartialEq, Hash, Debug)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub enum EnvType {
|
pub enum EnvType {
|
||||||
Client,
|
Client,
|
||||||
Server,
|
Server,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone, Hash, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Clone, Hash, PartialEq, Eq, Debug)]
|
||||||
#[serde(rename_all = "kebab-case")]
|
#[serde(rename_all = "kebab-case")]
|
||||||
pub enum PackDependency {
|
pub enum PackDependency {
|
||||||
Forge,
|
Forge,
|
||||||
|
|||||||
@@ -46,6 +46,17 @@ pub async fn version_list(
|
|||||||
redis: web::Data<RedisPool>,
|
redis: web::Data<RedisPool>,
|
||||||
session_queue: web::Data<AuthQueue>,
|
session_queue: web::Data<AuthQueue>,
|
||||||
) -> Result<HttpResponse, ApiError> {
|
) -> Result<HttpResponse, ApiError> {
|
||||||
|
let loaders = if let Some(loaders) = filters.loaders {
|
||||||
|
if let Ok(mut loaders) = serde_json::from_str::<Vec<String>>(&loaders) {
|
||||||
|
loaders.push("mrpack".to_string());
|
||||||
|
Some(loaders)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
let loader_fields = if let Some(game_versions) = filters.game_versions {
|
let loader_fields = if let Some(game_versions) = filters.game_versions {
|
||||||
// TODO: extract this logic which is similar to the other v2->v3 version_file functions
|
// TODO: extract this logic which is similar to the other v2->v3 version_file functions
|
||||||
let mut loader_fields = HashMap::new();
|
let mut loader_fields = HashMap::new();
|
||||||
@@ -57,6 +68,17 @@ pub async fn version_list(
|
|||||||
game_versions.push(serde_json::json!(gv.clone()));
|
game_versions.push(serde_json::json!(gv.clone()));
|
||||||
}
|
}
|
||||||
loader_fields.insert("game_versions".to_string(), game_versions);
|
loader_fields.insert("game_versions".to_string(), game_versions);
|
||||||
|
|
||||||
|
if let Some(ref loaders) = loaders {
|
||||||
|
loader_fields.insert(
|
||||||
|
"loaders".to_string(),
|
||||||
|
loaders
|
||||||
|
.iter()
|
||||||
|
.map(|x| serde_json::json!(x.clone()))
|
||||||
|
.collect(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
serde_json::to_string(&loader_fields).ok()
|
serde_json::to_string(&loader_fields).ok()
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@@ -65,7 +87,7 @@ pub async fn version_list(
|
|||||||
|
|
||||||
let filters = v3::versions::VersionListFilters {
|
let filters = v3::versions::VersionListFilters {
|
||||||
loader_fields,
|
loader_fields,
|
||||||
loaders: filters.loaders,
|
loaders: loaders.and_then(|x| serde_json::to_string(&x).ok()),
|
||||||
featured: filters.featured,
|
featured: filters.featured,
|
||||||
version_type: filters.version_type,
|
version_type: filters.version_type,
|
||||||
limit: filters.limit,
|
limit: filters.limit,
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ use meilisearch_sdk::client::Client;
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::cmp::min;
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ pub enum ValidationError {
|
|||||||
Database(#[from] DatabaseError),
|
Database(#[from] DatabaseError),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Eq, PartialEq)]
|
#[derive(Eq, PartialEq, Debug)]
|
||||||
pub enum ValidationResult {
|
pub enum ValidationResult {
|
||||||
/// File should be marked as primary with pack file data
|
/// File should be marked as primary with pack file data
|
||||||
PassWithPackDataAndFiles {
|
PassWithPackDataAndFiles {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ impl super::Validator for ModpackValidator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_supported_loaders(&self) -> &[&str] {
|
fn get_supported_loaders(&self) -> &[&str] {
|
||||||
&["forge", "fabric", "quilt"]
|
&["forge", "fabric", "quilt", "mrpack"]
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_supported_game_versions(&self) -> SupportedGameVersions {
|
fn get_supported_game_versions(&self) -> SupportedGameVersions {
|
||||||
|
|||||||
Reference in New Issue
Block a user