feat: add global & server leveling, quests, achievements, guilds land-claiming, social & toggleable configs
This commit is contained in:
1 parent
4b79f69c20
commit
b4cef85b1f
40 files changed
+10261
-27
No files matched your search
@@ -1,14 +1,19 @@
|
||||
pub mod account;
|
||||
pub mod achievements;
|
||||
pub mod activity;
|
||||
pub mod admin;
|
||||
pub mod guilds;
|
||||
pub mod landing;
|
||||
pub mod leveling;
|
||||
pub mod meta;
|
||||
pub mod public;
|
||||
pub mod quests;
|
||||
pub mod servers;
|
||||
pub mod social;
|
||||
|
||||
use crate::state::AppState;
|
||||
use axum::extract::DefaultBodyLimit;
|
||||
use axum::routing::{delete, get, post};
|
||||
use axum::routing::{delete, get, post, put};
|
||||
use axum::Router;
|
||||
|
||||
pub fn api(state: &AppState) -> Router<AppState> {
|
||||
@@ -34,6 +39,54 @@ pub fn api(state: &AppState) -> Router<AppState> {
|
||||
.route("/landing", get(landing::public_landing))
|
||||
.route("/launcher/authlib-injector.json", get(account::authlib_index))
|
||||
.route("/launcher/authlib-injector.jar", get(account::authlib_jar))
|
||||
// Leveling & Rewards
|
||||
.route("/levels/me", get(leveling::get_my_levels))
|
||||
.route("/leveling/me", get(leveling::get_my_levels))
|
||||
.route("/levels/player/{uuid}", get(leveling::get_player_levels))
|
||||
.route("/levels/leaderboard", get(leveling::get_level_leaderboard))
|
||||
.route("/levels/rewards", get(leveling::list_rewards))
|
||||
// Daily & Weekly Quests
|
||||
.route("/quests/my", get(quests::get_my_quests))
|
||||
.route("/quests/me", get(quests::get_my_quests))
|
||||
.route("/quests/{id}/claim", post(quests::claim_quest))
|
||||
// Achievements
|
||||
.route("/achievements/my", get(achievements::get_my_achievements))
|
||||
.route("/achievements/me", get(achievements::get_my_achievements))
|
||||
.route("/achievements/player/{uuid}", get(achievements::get_player_achievements))
|
||||
// Guilds & Land Claims
|
||||
.route("/guilds", get(guilds::list_guilds).post(guilds::create_guild))
|
||||
.route("/guilds/my", get(guilds::get_my_guild))
|
||||
.route("/guilds/claims/grid", get(guilds::get_chunk_grid))
|
||||
.route("/guilds/claims/{id}", delete(guilds::unclaim_by_id))
|
||||
.route("/guilds/{id}", get(guilds::get_guild_by_id).put(guilds::update_guild))
|
||||
.route("/guilds/{id}/members", post(guilds::add_guild_member))
|
||||
.route("/guilds/{id}/members/{uuid}", delete(guilds::remove_guild_member))
|
||||
.route("/guilds/{id}/posts", post(guilds::create_guild_post))
|
||||
.route("/guilds/{id}/claims", post(guilds::claim_chunk).delete(guilds::unclaim_chunk))
|
||||
.route("/guilds/{id}/claim", post(guilds::claim_chunk))
|
||||
.route("/guilds/{id}/unclaim", post(guilds::unclaim_chunk))
|
||||
// Social: Friends, DMs, Invites, Profiles, Posts
|
||||
.route("/friends", get(social::list_friends))
|
||||
.route("/friends/request", post(social::send_friend_request))
|
||||
.route("/friends/respond", post(social::respond_friend_request))
|
||||
.route("/friends/{uuid}/accept", post(social::accept_friend_request))
|
||||
.route("/friends/{uuid}", delete(social::remove_friend))
|
||||
.route("/messages/{uuid}", get(social::get_direct_messages).post(social::send_direct_message))
|
||||
.route("/invites", get(social::list_my_game_invites).post(social::send_game_invite))
|
||||
.route("/invites/{id}/respond", post(social::respond_game_invite))
|
||||
.route("/profiles/me", put(social::update_my_profile))
|
||||
.route("/profiles/{uuid}", get(social::get_player_profile))
|
||||
.route("/profiles/me/posts", post(social::create_user_post))
|
||||
.route("/profiles/me/posts/{id}", delete(social::delete_user_post))
|
||||
.route("/posts/{id}/like", post(social::like_user_post))
|
||||
.route("/social/friends", get(social::list_friends))
|
||||
.route("/social/friends/request", post(social::send_friend_request))
|
||||
.route("/social/friends/respond", post(social::respond_friend_request))
|
||||
.route("/social/messages/{uuid}", get(social::get_direct_messages).post(social::send_direct_message))
|
||||
.route("/social/profile/me", put(social::update_my_profile))
|
||||
.route("/social/profile/{uuid}", get(social::get_player_profile))
|
||||
.route("/social/posts", post(social::create_user_post))
|
||||
.route("/social/posts/{id}/like", post(social::like_user_post))
|
||||
.layer(DefaultBodyLimit::max(4 * 1024 * 1024));
|
||||
|
||||
let admin = Router::new()
|
||||
@@ -71,6 +124,13 @@ pub fn api(state: &AppState) -> Router<AppState> {
|
||||
.route("/modrinth/project/{id}/versions", get(meta::modrinth_versions))
|
||||
.route("/curseforge/search", get(meta::curseforge_search))
|
||||
.route("/curseforge/mod/{id}/files", get(meta::curseforge_files))
|
||||
// Admin Quests & Achievements & Rewards
|
||||
.route("/rewards", post(leveling::admin_create_reward))
|
||||
.route("/rewards/{id}", delete(leveling::admin_delete_reward))
|
||||
.route("/quests", get(quests::admin_list_quests).post(quests::admin_create_quest))
|
||||
.route("/quests/{id}", put(quests::admin_update_quest).delete(quests::admin_delete_quest))
|
||||
.route("/achievements", get(achievements::admin_list_achievements).post(achievements::admin_create_achievement))
|
||||
.route("/achievements/{id}", put(achievements::admin_update_achievement).delete(achievements::admin_delete_achievement))
|
||||
.layer(DefaultBodyLimit::max(upload_limit));
|
||||
|
||||
// Called by the SCOPENET Paper plugin and Fabric/Forge mods.
|
||||
@@ -78,6 +138,7 @@ pub fn api(state: &AppState) -> Router<AppState> {
|
||||
.route("/hello", post(servers::hello))
|
||||
.route("/login", post(servers::login))
|
||||
.route("/sync", post(servers::sync))
|
||||
.route("/guilds/check-chunk", post(guilds::server_check_chunk))
|
||||
.layer(DefaultBodyLimit::max(2 * 1024 * 1024));
|
||||
|
||||
Router::new()
|
||||
|
||||
Reference in new issue
Block a user