diff --git a/validation/src/create_mapfix.rs b/validation/src/create_mapfix.rs new file mode 100644 index 0000000..dbfbc49 --- /dev/null +++ b/validation/src/create_mapfix.rs @@ -0,0 +1,30 @@ +use crate::nats_types::CreateMapfixRequest; + +#[allow(dead_code)] +#[derive(Debug)] +pub enum Error{ + Get(rbx_asset::cookie::GetError), + 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{ + pub async fn create_mapfix(&self,create_info:CreateMapfixRequest)->Result<(),Error>{ + // download the map model version + let model_data=self.cookie_context.get_asset(rbx_asset::cookie::GetAssetRequest{ + asset_id:create_info.ModelID, + version:None, + }).await.map_err(Error::Get)?; + + // parse create fields out of asset + + // call create on api + + Ok(()) + } +} diff --git a/validation/src/create_submission.rs b/validation/src/create_submission.rs new file mode 100644 index 0000000..563798b --- /dev/null +++ b/validation/src/create_submission.rs @@ -0,0 +1,30 @@ +use crate::nats_types::CreateSubmissionRequest; + +#[allow(dead_code)] +#[derive(Debug)] +pub enum Error{ + Get(rbx_asset::cookie::GetError), + ApiActionSubmissionCreate(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{ + pub async fn create_submission(&self,create_info:CreateSubmissionRequest)->Result<(),Error>{ + // download the map model version + let model_data=self.cookie_context.get_asset(rbx_asset::cookie::GetAssetRequest{ + asset_id:create_info.ModelID, + version:None, + }).await.map_err(Error::Get)?; + + // parse create fields out of asset + + // call create on api + + Ok(()) + } +} diff --git a/validation/src/main.rs b/validation/src/main.rs index 355b0b4..5c7a458 100644 --- a/validation/src/main.rs +++ b/validation/src/main.rs @@ -3,6 +3,8 @@ use futures::StreamExt; mod message_handler; mod nats_types; mod types; +mod create_mapfix; +mod create_submission; mod upload_mapfix; mod upload_submission; mod validator; diff --git a/validation/src/message_handler.rs b/validation/src/message_handler.rs index 1f1f453..bff0f10 100644 --- a/validation/src/message_handler.rs +++ b/validation/src/message_handler.rs @@ -5,6 +5,8 @@ pub enum HandleMessageError{ DoubleAck(async_nats::Error), Json(serde_json::Error), UnknownSubject(String), + CreateMapfix(crate::create_mapfix::Error), + CreateSubmission(crate::create_submission::Error), UploadMapfix(crate::upload_mapfix::Error), UploadSubmission(crate::upload_submission::Error), ValidateMapfix(crate::validate_mapfix::Error), @@ -45,6 +47,8 @@ impl MessageHandler{ let message=message_result.map_err(HandleMessageError::Messages)?; message.double_ack().await.map_err(HandleMessageError::DoubleAck)?; match message.subject.as_str(){ + "maptest.mapfixes.create"=>self.create_mapfix(from_slice(&message.payload)?).await.map_err(HandleMessageError::CreateMapfix), + "maptest.submissions.create"=>self.create_submission(from_slice(&message.payload)?).await.map_err(HandleMessageError::CreateSubmission), "maptest.mapfixes.upload"=>self.upload_mapfix(from_slice(&message.payload)?).await.map_err(HandleMessageError::UploadMapfix), "maptest.submissions.upload"=>self.upload_submission(from_slice(&message.payload)?).await.map_err(HandleMessageError::UploadSubmission), "maptest.mapfixes.validate"=>self.validate_mapfix(from_slice(&message.payload)?).await.map_err(HandleMessageError::ValidateMapfix), diff --git a/validation/src/nats_types.rs b/validation/src/nats_types.rs index 15f0924..1401f83 100644 --- a/validation/src/nats_types.rs +++ b/validation/src/nats_types.rs @@ -4,6 +4,22 @@ // Requests are sent from maps-service to validator // Validation invokes the REST api to update the submissions +#[allow(nonstandard_style)] +#[derive(serde::Deserialize)] +pub struct CreateSubmissionRequest{ + // operation_id is passed back in the response message + pub OperationID:i32, + pub ModelID:u64, +} + +#[allow(nonstandard_style)] +#[derive(serde::Deserialize)] +pub struct CreateMapfixRequest{ + pub OperationID:i32, + pub ModelID:u64, + pub TargetAssetID:u64, +} + #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct ValidateSubmissionRequest{