Files
robinsr/sdkserver/src/services/dispatch.rs
2025-03-09 05:09:09 +07:00

71 lines
2.2 KiB
Rust

use crate::config::version_config;
use axum::extract::Query;
use prost::Message;
use proto::{DispatchRegionData, Gateserver, RegionEntry};
use serde::Deserialize;
pub const QUERY_DISPATCH_ENDPOINT: &str = "/query_dispatch";
pub const QUERY_GATEWAY_ENDPOINT: &str = "/query_gateway";
#[tracing::instrument]
pub async fn query_dispatch() -> String {
let rsp = DispatchRegionData {
retcode: 0,
region_list: vec![RegionEntry {
name: String::from("RobinSR"),
title: String::from("RobinSR"),
env_type: String::from("22"),
dispatch_url: String::from("http://127.0.0.1:21000/query_gateway"),
..Default::default()
}],
..Default::default()
};
let mut buff = Vec::new();
rsp.encode(&mut buff).unwrap();
rbase64::encode(&buff)
}
#[derive(Deserialize, Debug)]
pub struct QueryGatewayParameters {
pub version: String,
}
#[tracing::instrument]
pub async fn query_gateway(parameters: Query<QueryGatewayParameters>) -> String {
let rsp = if let Some(config) = version_config::instance().get(&parameters.version) {
Gateserver {
retcode: 0,
ip: String::from("127.0.0.1"),
port: 23301,
asset_bundle_url: config.asset_bundle_url.clone(),
ex_resource_url: config.ex_resource_url.clone(),
lua_url: config.lua_url.clone(),
ifix_version: String::from("0"),
enable_design_data_version_update: true,
enable_version_update: true,
enable_upload_battle_log: true,
network_diagnostic: true,
close_redeem_code: true,
enable_android_middle_package: true,
enable_watermark: true,
event_tracking_open: true,
enable_cdn_ipv6: 1,
enable_save_replay_file: true,
..Default::default()
}
} else {
Gateserver {
retcode: 9,
login_white_msg: format!("forbidden version: {} or invalid bind", parameters.version),
..Default::default()
}
};
let mut buff = Vec::new();
rsp.encode(&mut buff).unwrap();
rbase64::encode(&buff)
}