55 lines
1.7 KiB
Rust
55 lines
1.7 KiB
Rust
use crate::nats_types::CreateMapfixRequest;
|
|
use crate::create::CreateRequest;
|
|
|
|
#[allow(dead_code)]
|
|
#[derive(Debug)]
|
|
pub enum Error{
|
|
Create(crate::create::Error),
|
|
ApiActionMapfixCreate(submissions_api::Error),
|
|
}
|
|
impl std::fmt::Display for Error{
|
|
fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{
|
|
write!(f,"{self:?}")
|
|
}
|
|
}
|
|
impl std::error::Error for Error{}
|
|
|
|
impl crate::message_handler::MessageHandler{
|
|
async fn create_mapfix_inner(&self,create_info:CreateMapfixRequest)->Result<(),Error>{
|
|
// call deduplicated inner code
|
|
let create_request=self.create_inner(CreateRequest{
|
|
ModelID:create_info.ModelID,
|
|
}).await.map_err(Error::Create)?;
|
|
|
|
// call create on api
|
|
self.api.create_mapfix(submissions_api::types::CreateMapfixRequest{
|
|
OperationID:create_info.OperationID,
|
|
AssetOwner:create_request.AssetOwner as i64,
|
|
DisplayName:create_request.DisplayName.as_deref().unwrap_or_default(),
|
|
Creator:create_request.Creator.as_deref().unwrap_or_default(),
|
|
// not great TODO: make this great
|
|
GameID:create_request.GameID.unwrap_or(crate::rbx_util::GameID::Bhop) as i32,
|
|
AssetID:create_info.ModelID,
|
|
AssetVersion:create_request.AssetVersion,
|
|
TargetAssetID:create_info.TargetAssetID,
|
|
Description:create_info.Description.as_str(),
|
|
}).await.map_err(Error::ApiActionMapfixCreate)?;
|
|
|
|
Ok(())
|
|
}
|
|
pub async fn create_mapfix(&self,create_info:CreateMapfixRequest)->Result<(),submissions_api::Error>{
|
|
let operation_id=create_info.OperationID;
|
|
|
|
let create_result=self.create_mapfix_inner(create_info).await;
|
|
|
|
if let Err(e)=create_result{
|
|
self.api.action_operation_failed(submissions_api::types::ActionOperationFailedRequest{
|
|
OperationID:operation_id,
|
|
StatusMessage:e.to_string(),
|
|
}).await?;
|
|
}
|
|
|
|
Ok(())
|
|
}
|
|
}
|