You've already forked AstralRinth
forked from didirus/AstralRinth
feat(app): configurable Modrinth endpoints through .env files (#4015)
This commit is contained in:
committed by
GitHub
parent
87de47fe5e
commit
d4516d3527
@@ -1,7 +1,7 @@
|
||||
use crate::state::ModrinthCredentials;
|
||||
|
||||
#[tracing::instrument]
|
||||
pub fn authenticate_begin_flow() -> String {
|
||||
pub fn authenticate_begin_flow() -> &'static str {
|
||||
crate::state::get_login_url()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
//! Configuration structs
|
||||
|
||||
// pub const MODRINTH_URL: &str = "https://staging.modrinth.com/";
|
||||
// pub const MODRINTH_API_URL: &str = "https://staging-api.modrinth.com/v2/";
|
||||
// pub const MODRINTH_API_URL_V3: &str = "https://staging-api.modrinth.com/v3/";
|
||||
|
||||
pub const MODRINTH_URL: &str = "https://modrinth.com/";
|
||||
pub const MODRINTH_API_URL: &str = "https://api.modrinth.com/v2/";
|
||||
pub const MODRINTH_API_URL_V3: &str = "https://api.modrinth.com/v3/";
|
||||
|
||||
pub const MODRINTH_SOCKET_URL: &str = "wss://api.modrinth.com/";
|
||||
|
||||
pub const META_URL: &str = "https://launcher-meta.modrinth.com/";
|
||||
@@ -11,7 +11,6 @@ and launching Modrinth mod packs
|
||||
mod util;
|
||||
|
||||
mod api;
|
||||
mod config;
|
||||
mod error;
|
||||
mod event;
|
||||
mod launcher;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use crate::config::{META_URL, MODRINTH_API_URL, MODRINTH_API_URL_V3};
|
||||
use crate::state::ProjectType;
|
||||
use crate::util::fetch::{FetchSemaphore, fetch_json, sha1_async};
|
||||
use chrono::{DateTime, Utc};
|
||||
@@ -8,6 +7,7 @@ use serde::de::DeserializeOwned;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::SqlitePool;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fmt::Display;
|
||||
use std::hash::Hash;
|
||||
use std::path::{Path, PathBuf};
|
||||
@@ -945,7 +945,7 @@ impl CachedEntry {
|
||||
CacheValueType::Project => {
|
||||
fetch_original_values!(
|
||||
Project,
|
||||
MODRINTH_API_URL,
|
||||
env!("MODRINTH_API_URL"),
|
||||
"projects",
|
||||
CacheValue::Project
|
||||
)
|
||||
@@ -953,7 +953,7 @@ impl CachedEntry {
|
||||
CacheValueType::Version => {
|
||||
fetch_original_values!(
|
||||
Version,
|
||||
MODRINTH_API_URL,
|
||||
env!("MODRINTH_API_URL"),
|
||||
"versions",
|
||||
CacheValue::Version
|
||||
)
|
||||
@@ -961,7 +961,7 @@ impl CachedEntry {
|
||||
CacheValueType::User => {
|
||||
fetch_original_values!(
|
||||
User,
|
||||
MODRINTH_API_URL,
|
||||
env!("MODRINTH_API_URL"),
|
||||
"users",
|
||||
CacheValue::User
|
||||
)
|
||||
@@ -969,7 +969,7 @@ impl CachedEntry {
|
||||
CacheValueType::Team => {
|
||||
let mut teams = fetch_many_batched::<Vec<TeamMember>>(
|
||||
Method::GET,
|
||||
MODRINTH_API_URL_V3,
|
||||
env!("MODRINTH_API_URL_V3"),
|
||||
"teams?ids=",
|
||||
&keys,
|
||||
fetch_semaphore,
|
||||
@@ -1008,7 +1008,7 @@ impl CachedEntry {
|
||||
CacheValueType::Organization => {
|
||||
let mut orgs = fetch_many_batched::<Organization>(
|
||||
Method::GET,
|
||||
MODRINTH_API_URL_V3,
|
||||
env!("MODRINTH_API_URL_V3"),
|
||||
"organizations?ids=",
|
||||
&keys,
|
||||
fetch_semaphore,
|
||||
@@ -1063,7 +1063,7 @@ impl CachedEntry {
|
||||
CacheValueType::File => {
|
||||
let mut versions = fetch_json::<HashMap<String, Version>>(
|
||||
Method::POST,
|
||||
&format!("{MODRINTH_API_URL}version_files"),
|
||||
concat!(env!("MODRINTH_API_URL"), "version_files"),
|
||||
None,
|
||||
Some(serde_json::json!({
|
||||
"algorithm": "sha1",
|
||||
@@ -1119,7 +1119,11 @@ impl CachedEntry {
|
||||
.map(|x| {
|
||||
(
|
||||
x.key().to_string(),
|
||||
format!("{META_URL}{}/v0/manifest.json", x.key()),
|
||||
format!(
|
||||
"{}{}/v0/manifest.json",
|
||||
env!("MODRINTH_LAUNCHER_META_URL"),
|
||||
x.key()
|
||||
),
|
||||
)
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
@@ -1154,7 +1158,7 @@ impl CachedEntry {
|
||||
CacheValueType::MinecraftManifest => {
|
||||
fetch_original_value!(
|
||||
MinecraftManifest,
|
||||
META_URL,
|
||||
env!("MODRINTH_LAUNCHER_META_URL"),
|
||||
format!(
|
||||
"minecraft/v{}/manifest.json",
|
||||
daedalus::minecraft::CURRENT_FORMAT_VERSION
|
||||
@@ -1165,7 +1169,7 @@ impl CachedEntry {
|
||||
CacheValueType::Categories => {
|
||||
fetch_original_value!(
|
||||
Categories,
|
||||
MODRINTH_API_URL,
|
||||
env!("MODRINTH_API_URL"),
|
||||
"tag/category",
|
||||
CacheValue::Categories
|
||||
)
|
||||
@@ -1173,7 +1177,7 @@ impl CachedEntry {
|
||||
CacheValueType::ReportTypes => {
|
||||
fetch_original_value!(
|
||||
ReportTypes,
|
||||
MODRINTH_API_URL,
|
||||
env!("MODRINTH_API_URL"),
|
||||
"tag/report_type",
|
||||
CacheValue::ReportTypes
|
||||
)
|
||||
@@ -1181,7 +1185,7 @@ impl CachedEntry {
|
||||
CacheValueType::Loaders => {
|
||||
fetch_original_value!(
|
||||
Loaders,
|
||||
MODRINTH_API_URL,
|
||||
env!("MODRINTH_API_URL"),
|
||||
"tag/loader",
|
||||
CacheValue::Loaders
|
||||
)
|
||||
@@ -1189,7 +1193,7 @@ impl CachedEntry {
|
||||
CacheValueType::GameVersions => {
|
||||
fetch_original_value!(
|
||||
GameVersions,
|
||||
MODRINTH_API_URL,
|
||||
env!("MODRINTH_API_URL"),
|
||||
"tag/game_version",
|
||||
CacheValue::GameVersions
|
||||
)
|
||||
@@ -1197,7 +1201,7 @@ impl CachedEntry {
|
||||
CacheValueType::DonationPlatforms => {
|
||||
fetch_original_value!(
|
||||
DonationPlatforms,
|
||||
MODRINTH_API_URL,
|
||||
env!("MODRINTH_API_URL"),
|
||||
"tag/donation_platform",
|
||||
CacheValue::DonationPlatforms
|
||||
)
|
||||
@@ -1297,14 +1301,12 @@ impl CachedEntry {
|
||||
}
|
||||
});
|
||||
|
||||
let version_update_url =
|
||||
format!("{MODRINTH_API_URL}version_files/update");
|
||||
let variations =
|
||||
futures::future::try_join_all(filtered_keys.iter().map(
|
||||
|((loaders_key, game_version), hashes)| {
|
||||
fetch_json::<HashMap<String, Version>>(
|
||||
Method::POST,
|
||||
&version_update_url,
|
||||
concat!(env!("MODRINTH_API_URL"), "version_files/update"),
|
||||
None,
|
||||
Some(serde_json::json!({
|
||||
"algorithm": "sha1",
|
||||
@@ -1368,7 +1370,11 @@ impl CachedEntry {
|
||||
.map(|x| {
|
||||
(
|
||||
x.key().to_string(),
|
||||
format!("{MODRINTH_API_URL}search{}", x.key()),
|
||||
format!(
|
||||
"{}search{}",
|
||||
env!("MODRINTH_API_URL"),
|
||||
x.key()
|
||||
),
|
||||
)
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use crate::config::{MODRINTH_API_URL_V3, MODRINTH_SOCKET_URL};
|
||||
use crate::data::ModrinthCredentials;
|
||||
use crate::event::FriendPayload;
|
||||
use crate::event::emit::emit_friend;
|
||||
@@ -77,7 +76,8 @@ impl FriendsSocket {
|
||||
|
||||
if let Some(credentials) = credentials {
|
||||
let mut request = format!(
|
||||
"{MODRINTH_SOCKET_URL}_internal/launcher_socket?code={}",
|
||||
"{}_internal/launcher_socket?code={}",
|
||||
env!("MODRINTH_SOCKET_URL"),
|
||||
credentials.session
|
||||
)
|
||||
.into_client_request()?;
|
||||
@@ -303,7 +303,7 @@ impl FriendsSocket {
|
||||
) -> crate::Result<Vec<UserFriend>> {
|
||||
fetch_json(
|
||||
Method::GET,
|
||||
&format!("{MODRINTH_API_URL_V3}friends"),
|
||||
concat!(env!("MODRINTH_API_URL_V3"), "friends"),
|
||||
None,
|
||||
None,
|
||||
semaphore,
|
||||
@@ -328,7 +328,7 @@ impl FriendsSocket {
|
||||
) -> crate::Result<()> {
|
||||
fetch_advanced(
|
||||
Method::POST,
|
||||
&format!("{MODRINTH_API_URL_V3}friend/{user_id}"),
|
||||
&format!("{}friend/{user_id}", env!("MODRINTH_API_URL_V3")),
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
@@ -349,7 +349,7 @@ impl FriendsSocket {
|
||||
) -> crate::Result<()> {
|
||||
fetch_advanced(
|
||||
Method::DELETE,
|
||||
&format!("{MODRINTH_API_URL_V3}friend/{user_id}"),
|
||||
&format!("{}friend/{user_id}", env!("MODRINTH_API_URL_V3")),
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use crate::config::{MODRINTH_API_URL, MODRINTH_URL};
|
||||
use crate::state::{CacheBehaviour, CachedEntry};
|
||||
use crate::util::fetch::{FetchSemaphore, fetch_advanced};
|
||||
use chrono::{DateTime, Duration, TimeZone, Utc};
|
||||
@@ -31,7 +30,7 @@ impl ModrinthCredentials {
|
||||
|
||||
let resp = fetch_advanced(
|
||||
Method::POST,
|
||||
&format!("{MODRINTH_API_URL}session/refresh"),
|
||||
concat!(env!("MODRINTH_API_URL"), "session/refresh"),
|
||||
None,
|
||||
None,
|
||||
Some(("Authorization", &*creds.session)),
|
||||
@@ -190,8 +189,8 @@ impl ModrinthCredentials {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_login_url() -> String {
|
||||
format!("{MODRINTH_URL}auth/sign-in?launcher=true")
|
||||
pub const fn get_login_url() -> &'static str {
|
||||
concat!(env!("MODRINTH_URL"), "auth/sign-in?launcher=true")
|
||||
}
|
||||
|
||||
pub async fn finish_login_flow(
|
||||
@@ -216,7 +215,7 @@ async fn fetch_info(
|
||||
) -> crate::Result<crate::state::cache::User> {
|
||||
let result = fetch_advanced(
|
||||
Method::GET,
|
||||
&format!("{MODRINTH_API_URL}user"),
|
||||
concat!(env!("MODRINTH_API_URL"), "user"),
|
||||
None,
|
||||
None,
|
||||
Some(("Authorization", token)),
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
//! Functions for fetching information from the Internet
|
||||
use super::io::{self, IOError};
|
||||
use crate::config::{MODRINTH_API_URL, MODRINTH_API_URL_V3};
|
||||
use crate::event::LoadingBarId;
|
||||
use crate::event::emit::emit_loading;
|
||||
use bytes::Bytes;
|
||||
@@ -84,8 +83,8 @@ pub async fn fetch_advanced(
|
||||
.as_ref()
|
||||
.is_none_or(|x| &*x.0.to_lowercase() != "authorization")
|
||||
&& (url.starts_with("https://cdn.modrinth.com")
|
||||
|| url.starts_with(MODRINTH_API_URL)
|
||||
|| url.starts_with(MODRINTH_API_URL_V3))
|
||||
|| url.starts_with(env!("MODRINTH_API_URL"))
|
||||
|| url.starts_with(env!("MODRINTH_API_URL_V3")))
|
||||
{
|
||||
crate::state::ModrinthCredentials::get_active(exec).await?
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user