use axum::{ Router, middleware, routing::{get, patch, post}, }; use crate::{ auth::require_bearer_auth, profile_identity::update_profile_identity, runtime_browse_history::{ delete_runtime_browse_history, get_runtime_browse_history, post_runtime_browse_history, }, runtime_profile::{ claim_profile_task_reward, create_profile_recharge_order, get_profile_analytics_metric, get_profile_dashboard, get_profile_play_stats, get_profile_recharge_center, get_profile_referral_invite_center, get_profile_task_center, get_profile_wallet_ledger, redeem_profile_referral_invite_code, redeem_profile_reward_code, submit_profile_feedback, }, runtime_save::{list_profile_save_archives, resume_profile_save_archive}, state::AppState, }; pub fn router(state: AppState) -> Router { Router::new() .route( "/api/profile/me", patch(update_profile_identity).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/browse-history", get(get_runtime_browse_history) .post(post_runtime_browse_history) .delete(delete_runtime_browse_history) .route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/dashboard", get(get_profile_dashboard).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/wallet-ledger", get(get_profile_wallet_ledger).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/recharge-center", get(get_profile_recharge_center).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/recharge/orders", post(create_profile_recharge_order).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/feedback", post(submit_profile_feedback) .layer(axum::extract::DefaultBodyLimit::max(6 * 1024 * 1024)) .route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/referrals/invite-center", get(get_profile_referral_invite_center).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/referrals/redeem-code", post(redeem_profile_referral_invite_code).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/redeem-codes/redeem", post(redeem_profile_reward_code).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/analytics/metric", get(get_profile_analytics_metric).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/tasks", get(get_profile_task_center).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/tasks/{task_id}/claim", post(claim_profile_task_reward).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/save-archives", get(list_profile_save_archives).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/save-archives/{world_key}", post(resume_profile_save_archive).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/profile/play-stats", get(get_profile_play_stats).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) }