Merge super-mario-maker into v0
This commit is contained in:
commit
e129f9c3b3
30 changed files with 2953 additions and 133 deletions
240
rnex-core/src/rmc/protocols/datastore.rs
Normal file
240
rnex-core/src/rmc/protocols/datastore.rs
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
use macros::{method_id, rmc_proto, RmcSerialize, rmc_struct};
|
||||
use rnex_core::rmc::structures::qbuffer::QBuffer;
|
||||
use rnex_core::rmc::response::ErrorCode;
|
||||
use rnex_core::rmc::structures::qresult::QResult;
|
||||
use rnex_core::kerberos::KerberosDateTime;
|
||||
use rnex_core::PID;
|
||||
use rnex_core::rmc::structures::resultsrange::ResultsRange;
|
||||
|
||||
#[derive(RmcSerialize, Clone, Debug, Default)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct PersistenceTarget {
|
||||
pub owner: PID,
|
||||
pub persistence_slot_id: u16,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone, Debug, Default)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct Permission {
|
||||
pub permission: u8,
|
||||
pub recipient_ids: Vec<PID>,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct RatingInfoWithSlot {
|
||||
pub slot: i8,
|
||||
pub rating: RatingInfo,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct RatingInfo {
|
||||
pub total_value: i64,
|
||||
pub count: u32,
|
||||
pub initial_value: i64,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone, Default)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct GetMetaParam {
|
||||
pub dataid: u64,
|
||||
pub persistence_target: PersistenceTarget,
|
||||
pub result_option: u8,
|
||||
pub access_password: u64,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone, Default)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct GetMetaInfo {
|
||||
pub dataid: u64,
|
||||
pub owner: PID,
|
||||
pub size: u32,
|
||||
pub name: String,
|
||||
pub data_type: u16,
|
||||
pub meta_binary: QBuffer,
|
||||
pub permission: Permission,
|
||||
pub del_permission: Permission,
|
||||
pub created_time: KerberosDateTime,
|
||||
pub updated_time: KerberosDateTime,
|
||||
pub period: u16,
|
||||
pub status: u8,
|
||||
pub referred_count: u32,
|
||||
pub refer_dat_id: u32,
|
||||
pub flag: u32,
|
||||
pub referred_time: KerberosDateTime,
|
||||
pub expire_time: KerberosDateTime,
|
||||
pub tags: Vec<String>,
|
||||
pub ratings: Vec<RatingInfoWithSlot>,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct RatingInitParam {
|
||||
pub flag: u8,
|
||||
pub internal_flag: u8,
|
||||
pub lock_type: u8,
|
||||
pub intial_valie: i64,
|
||||
pub range_min: i32,
|
||||
pub range_max: i32,
|
||||
pub period_hour: i8,
|
||||
pub period_duration: i16
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct RatingInitParamWithSlot {
|
||||
pub slot: i8,
|
||||
pub param: RatingInitParam,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct PersistenceInitParam {
|
||||
pub persistence_slot_id: u16,
|
||||
pub delete_last_object: bool,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct KeyValue {
|
||||
pub key: String,
|
||||
pub value: String,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct PreparePostParam {
|
||||
pub size: u32,
|
||||
pub name: String,
|
||||
pub data_type: u16,
|
||||
pub meta_binary: QBuffer,
|
||||
pub permission: Permission,
|
||||
pub del_permission: Permission,
|
||||
pub flag: u32,
|
||||
pub period: u16,
|
||||
pub refer_data_id: u32,
|
||||
pub tags: Vec<String>,
|
||||
pub rating_init_params: Vec<RatingInitParamWithSlot>,
|
||||
pub persistence_init_param: PersistenceInitParam,
|
||||
pub extra_data: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct ReqPostInfo {
|
||||
pub dataid: u64,
|
||||
pub url: String,
|
||||
pub request_headers: Vec<KeyValue>,
|
||||
pub form_fields: Vec<KeyValue>,
|
||||
pub root_ca_cert: Vec<u8>,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct CompletePostParam {
|
||||
pub dataid: u64,
|
||||
pub success: bool,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct RateCustomRankingParam {
|
||||
pub dataid: u64,
|
||||
pub appid: u32,
|
||||
pub score: u32,
|
||||
pub period: u16,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct BufferQueueParam {
|
||||
pub dataid: u64,
|
||||
pub slot: u32,
|
||||
}
|
||||
|
||||
// I just realized I forgot to add "DataStore" in front of the structs. I can't be assed to change it, sucks to be you lol.
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct DataStoreGetCustomRankingByDataIDParam {
|
||||
pub application_id: u32,
|
||||
pub data_id_list: Vec<u64>,
|
||||
pub result_option: u8,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct DataStoreCustomRankingResult {
|
||||
pub order: u32,
|
||||
pub score: u32,
|
||||
pub meta_info: GetMetaInfo,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct DataStorePrepareGetParam {
|
||||
pub dataid: u64,
|
||||
pub lockid: u32,
|
||||
pub persistence_target: PersistenceTarget,
|
||||
pub access_password: u64,
|
||||
pub extra_data: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct DataStoreReqGetInfo {
|
||||
pub url: String,
|
||||
pub request_headers: Vec<KeyValue>,
|
||||
pub size: u32,
|
||||
pub root_ca_cert: Vec<u8>,
|
||||
pub dataid: u64,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Clone)]
|
||||
#[rmc_struct(1)]
|
||||
pub struct DataStoreSearchParam {
|
||||
pub search_target: u8,
|
||||
pub owner_ids: Vec<PID>,
|
||||
pub owner_type: u8,
|
||||
pub destination_ids: Vec<u64>,
|
||||
pub data_type: u16,
|
||||
pub created_after: KerberosDateTime,
|
||||
pub created_before: KerberosDateTime,
|
||||
pub updated_after: KerberosDateTime,
|
||||
pub updated_before: KerberosDateTime,
|
||||
pub refer_dat_id: u32,
|
||||
pub tags: Vec<String>,
|
||||
pub result_order_column: u8,
|
||||
pub result_order: u8,
|
||||
pub result_range: ResultsRange,
|
||||
pub result_option: u8,
|
||||
pub minimal_rating_frequency: u32,
|
||||
pub use_cache: bool,
|
||||
}
|
||||
|
||||
#[rmc_proto(115)]
|
||||
pub trait DataStore{
|
||||
#[method_id(8)]
|
||||
async fn get_meta(&self, metaparam: GetMetaParam) -> Result<GetMetaInfo, ErrorCode>;
|
||||
#[method_id(36)]
|
||||
async fn get_metas_multiple_param(&self, params: Vec<GetMetaParam>) -> Result<(Vec<GetMetaInfo>, Vec<QResult>), ErrorCode>;
|
||||
#[method_id(24)]
|
||||
async fn prepare_post_object(&self, postparam: PreparePostParam) -> Result<ReqPostInfo, ErrorCode>;
|
||||
#[method_id(26)]
|
||||
async fn complete_post_object(&self, completeparam: CompletePostParam) -> Result<(), ErrorCode>;
|
||||
#[method_id(48)]
|
||||
async fn rate_custom_ranking(&self, rankingparam: Vec<RateCustomRankingParam>) -> Result<(), ErrorCode>;
|
||||
#[method_id(61)]
|
||||
async fn get_application_config(&self, appid: u32) -> Result<Vec<i32>, ErrorCode>;
|
||||
#[method_id(50)]
|
||||
async fn get_custom_ranking_by_data_id(&self, custom_ranking_param: DataStoreGetCustomRankingByDataIDParam) -> Result<(Vec<DataStoreCustomRankingResult>, Vec<QResult>), ErrorCode>;
|
||||
#[method_id(54)]
|
||||
async fn get_buffer_queue(&self, bufferparam: BufferQueueParam) -> Result<Vec<QBuffer>, ErrorCode>;
|
||||
#[method_id(25)]
|
||||
async fn prepare_get_object(&self, prepare_get_param: DataStorePrepareGetParam) -> Result<DataStoreReqGetInfo, ErrorCode>;
|
||||
#[method_id(65)]
|
||||
async fn followings_latest_course_search_object(&self, course_search_param: DataStoreSearchParam, extra_data: Vec<String>) -> Result<Vec<DataStoreCustomRankingResult>, ErrorCode>;
|
||||
#[method_id(74)]
|
||||
async fn get_application_config_string(&self, application_id: u32) -> Result<Vec<String>, ErrorCode>;
|
||||
}
|
||||
|
|
@ -11,6 +11,7 @@ pub mod nintendo_notification;
|
|||
pub mod notifications;
|
||||
pub mod ranking;
|
||||
pub mod secure;
|
||||
pub mod datastore;
|
||||
|
||||
use crate::result::ResultExtension;
|
||||
use crate::rmc::message::RMCMessage;
|
||||
|
|
|
|||
|
|
@ -2,17 +2,10 @@ use macros::{RmcSerialize, method_id, rmc_proto};
|
|||
|
||||
use rnex_core::kerberos::KerberosDateTime;
|
||||
use rnex_core::rmc::structures::qbuffer::QBuffer;
|
||||
|
||||
use rnex_core::rmc::structures::resultsrange::ResultsRange;
|
||||
use rnex_core::rmc::response::ErrorCode;
|
||||
use rnex_core::rmc::structures::ranking::UploadCompetitionData;
|
||||
|
||||
#[derive(RmcSerialize, Debug, Default, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct ResultsRange {
|
||||
pub offset: u32,
|
||||
pub size: u32,
|
||||
}
|
||||
|
||||
#[derive(RmcSerialize, Debug, Default, Clone)]
|
||||
#[rmc_struct(1)]
|
||||
pub struct CompetitionRankingGetParam {
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ pub mod ranking;
|
|||
pub mod rmc_struct;
|
||||
pub mod string;
|
||||
pub mod variant;
|
||||
pub mod resultsrange;
|
||||
|
||||
pub trait RmcSerialize {
|
||||
fn serialize(&self, writer: &mut impl Write) -> Result<()>;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ use bytemuck::bytes_of;
|
|||
use v_byte_helpers::{IS_BIG_ENDIAN, ReadExtensions};
|
||||
use crate::rmc::structures::{Result, RmcSerialize};
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct QBuffer(pub Vec<u8>);
|
||||
|
||||
impl RmcSerialize for QBuffer{
|
||||
|
|
|
|||
8
rnex-core/src/rmc/structures/resultsrange.rs
Normal file
8
rnex-core/src/rmc/structures/resultsrange.rs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
use macros::RmcSerialize;
|
||||
|
||||
#[derive(RmcSerialize, Debug, Default, Clone)]
|
||||
#[rmc_struct(0)]
|
||||
pub struct ResultsRange{
|
||||
pub offset: u32,
|
||||
pub size: u32
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue