From 246b8a7dc8baf04b5ed2fc9adc05fa3462359f16 Mon Sep 17 00:00:00 2001 From: Quaternions Date: Wed, 18 Dec 2024 16:00:11 -0800 Subject: [PATCH] validation: update api --- validation/api/src/external.rs | 177 +++++++++++++++------------------ validation/api/src/internal.rs | 142 +++++++++----------------- validation/api/src/lib.rs | 55 +--------- validation/api/src/types.rs | 169 +++++++++++++++++++++++++++++++ validation/src/publish_fix.rs | 2 +- validation/src/publish_new.rs | 2 +- validation/src/validator.rs | 52 +++------- 7 files changed, 318 insertions(+), 281 deletions(-) create mode 100644 validation/api/src/types.rs diff --git a/validation/api/src/external.rs b/validation/api/src/external.rs index 745b25e..b359503 100644 --- a/validation/api/src/external.rs +++ b/validation/api/src/external.rs @@ -1,86 +1,4 @@ -use crate::Error; - -#[derive(Clone,Copy,serde::Serialize,serde::Deserialize)] -pub struct ScriptID(i64); -#[derive(Clone,Copy,serde::Serialize,serde::Deserialize)] -pub struct ScriptPolicyID(i64); - -#[allow(nonstandard_style)] -pub struct GetScriptRequest{ - pub ScriptID:ScriptID, -} -#[allow(nonstandard_style)] -#[derive(serde::Deserialize)] -pub struct ScriptResponse{ - pub ID:i64, - pub Name:String, - pub Hash:String, - pub Source:String, - pub SubmissionID:i64, -} -#[allow(nonstandard_style)] -#[derive(serde::Serialize)] -pub struct CreateScriptRequest<'a>{ - pub Name:&'a str, - pub Source:&'a str, - pub SubmissionID:Option, -} -#[allow(nonstandard_style)] -#[derive(serde::Deserialize)] -pub struct ScriptIDResponse{ - pub ID:ScriptID, -} - -#[derive(serde_repr::Serialize_repr,serde_repr::Deserialize_repr)] -#[repr(i32)] -pub enum Policy{ - None=0, // not yet reviewed - Allowed=1, - Blocked=2, - Delete=3, - Replace=4, -} - -pub struct ScriptPolicyHashRequest<'a>{ - pub hash:&'a str, -} -#[allow(nonstandard_style)] -#[derive(serde::Deserialize)] -pub struct ScriptPolicyResponse{ - pub ID:i64, - pub FromScriptHash:String, - pub ToScriptID:ScriptID, - pub Policy:Policy -} -#[allow(nonstandard_style)] -#[derive(serde::Serialize)] -pub struct CreateScriptPolicyRequest{ - pub FromScriptID:ScriptID, - pub ToScriptID:ScriptID, - pub Policy:Policy, -} -#[allow(nonstandard_style)] -#[derive(serde::Deserialize)] -pub struct ScriptPolicyIDResponse{ - pub ID:ScriptPolicyID, -} - -#[allow(nonstandard_style)] -#[derive(serde::Serialize)] -pub struct UpdateScriptPolicyRequest{ - pub ScriptPolicyID:ScriptPolicyID, - pub FromScriptID:Option, - pub ToScriptID:Option, - pub Policy:Option, -} - -#[allow(nonstandard_style)] -pub struct ActionSubmissionUploadedRequest{ - pub SubmissionID:i64, - pub TargetAssetID:Option, -} - -pub struct SubmissionID(pub i64); +use crate::types::*; #[derive(Clone)] pub struct Context(crate::context::Context); @@ -91,51 +9,120 @@ impl Context{ } pub async fn get_script(&self,config:GetScriptRequest)->Result{ let url_raw=format!("{}/scripts/{}",self.0.base_url,config.ScriptID.0); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - crate::response_ok( + response_ok( self.0.get(url).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)? .json().await.map_err(Error::Reqwest) } + pub async fn get_scripts<'a>(&self,config:GetScriptsRequest<'a>)->Result,Error>{ + let url_raw=format!("{}/scripts",self.0.base_url); + let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; + + { + let mut query_pairs=url.query_pairs_mut(); + query_pairs.append_pair("Page",config.Page.to_string().as_str()); + query_pairs.append_pair("Limit",config.Limit.to_string().as_str()); + if let Some(name)=config.Name{ + query_pairs.append_pair("Name",name); + } + if let Some(hash)=config.Hash{ + query_pairs.append_pair("Hash",hash); + } + if let Some(source)=config.Source{ + query_pairs.append_pair("Source",source); + } + if let Some(submission_id)=config.SubmissionID{ + query_pairs.append_pair("SubmissionID",submission_id.to_string().as_str()); + } + } + + response_ok( + self.0.get(url).await.map_err(Error::Reqwest)? + ).await.map_err(Error::Response)? + .json().await.map_err(Error::Reqwest) + } + pub async fn get_script_from_hash<'a>(&self,config:HashRequest<'a>)->Result,SingleItemError>{ + let scripts=self.get_scripts(GetScriptsRequest{ + Page:1, + Limit:2, + Hash:Some(config.hash), + Name:None, + Source:None, + SubmissionID:None, + }).await.map_err(SingleItemError::Other)?; + if 1(&self,config:CreateScriptRequest<'a>)->Result{ let url_raw=format!("{}/scripts",self.0.base_url); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; let body=serde_json::to_string(&config).map_err(Error::JSON)?; - crate::response_ok( + response_ok( self.0.post(url,body).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)? .json().await.map_err(Error::Reqwest) } - pub async fn get_script_policy_from_hash<'a>(&self,config:ScriptPolicyHashRequest<'a>)->Result{ - let url_raw=format!("{}/script-policy/hash/{}",self.0.base_url,config.hash); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + pub async fn get_script_policies<'a>(&self,config:GetScriptPoliciesRequest<'a>)->Result,Error>{ + let url_raw=format!("{}/script-policy",self.0.base_url); + let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - crate::response_ok( + { + let mut query_pairs=url.query_pairs_mut(); + query_pairs.append_pair("Page",config.Page.to_string().as_str()); + query_pairs.append_pair("Limit",config.Limit.to_string().as_str()); + if let Some(hash)=config.FromScriptHash{ + query_pairs.append_pair("FromScriptHash",hash); + } + if let Some(script_id)=config.ToScriptID{ + query_pairs.append_pair("ToScriptID",script_id.0.to_string().as_str()); + } + if let Some(policy)=config.Policy{ + query_pairs.append_pair("Policy",(policy as i32).to_string().as_str()); + } + } + + response_ok( self.0.get(url).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)? .json().await.map_err(Error::Reqwest) } + pub async fn get_script_policy_from_hash<'a>(&self,config:HashRequest<'a>)->Result,SingleItemError>{ + let policies=self.get_script_policies(GetScriptPoliciesRequest{ + Page:1, + Limit:2, + FromScriptHash:Some(config.hash), + ToScriptID:None, + Policy:None, + }).await.map_err(SingleItemError::Other)?; + if 1Result{ let url_raw=format!("{}/script-policy",self.0.base_url); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; let body=serde_json::to_string(&config).map_err(Error::JSON)?; - crate::response_ok( + response_ok( self.0.post(url,body).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)? .json().await.map_err(Error::Reqwest) } pub async fn update_script_policy(&self,config:UpdateScriptPolicyRequest)->Result<(),Error>{ let url_raw=format!("{}/script-policy/id/{}",self.0.base_url,config.ScriptPolicyID.0); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; let body=serde_json::to_string(&config).map_err(Error::JSON)?; - crate::response_ok( + response_ok( self.0.post(url,body).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)?; diff --git a/validation/api/src/internal.rs b/validation/api/src/internal.rs index f9926a1..f778cd9 100644 --- a/validation/api/src/internal.rs +++ b/validation/api/src/internal.rs @@ -1,84 +1,4 @@ -use crate::Error; - -#[derive(Clone,Copy,serde::Serialize,serde::Deserialize)] -pub struct ScriptID(i64); -#[derive(Clone,Copy,serde::Serialize,serde::Deserialize)] -pub struct ScriptPolicyID(i64); - -#[allow(nonstandard_style)] -pub struct GetScriptRequest{ - pub ScriptID:ScriptID, -} -#[allow(nonstandard_style)] -#[derive(serde::Deserialize)] -pub struct ScriptResponse{ - pub ID:i64, - pub Name:String, - pub Hash:String, - pub Source:String, - pub SubmissionID:i64, -} -#[allow(nonstandard_style)] -#[derive(serde::Serialize)] -pub struct CreateScriptRequest<'a>{ - pub Name:&'a str, - pub Source:&'a str, - pub SubmissionID:Option, -} -#[allow(nonstandard_style)] -#[derive(serde::Deserialize)] -pub struct ScriptIDResponse{ - pub ID:ScriptID, -} - -#[derive(serde_repr::Serialize_repr,serde_repr::Deserialize_repr)] -#[repr(i32)] -pub enum Policy{ - None=0, // not yet reviewed - Allowed=1, - Blocked=2, - Delete=3, - Replace=4, -} - -pub struct ScriptPolicyHashRequest<'a>{ - pub hash:&'a str, -} -#[allow(nonstandard_style)] -#[derive(serde::Deserialize)] -pub struct ScriptPolicyResponse{ - pub ID:i64, - pub FromScriptHash:String, - pub ToScriptID:ScriptID, - pub Policy:Policy -} -#[allow(nonstandard_style)] -#[derive(serde::Serialize)] -pub struct CreateScriptPolicyRequest{ - pub FromScriptID:ScriptID, - pub ToScriptID:ScriptID, - pub Policy:Policy, -} -#[allow(nonstandard_style)] -#[derive(serde::Deserialize)] -pub struct ScriptPolicyIDResponse{ - pub ID:ScriptPolicyID, -} - -#[allow(nonstandard_style)] -pub struct UpdateSubmissionModelRequest{ - pub SubmissionID:i64, - pub ModelID:u64, - pub ModelVersion:u64, -} - -#[allow(nonstandard_style)] -pub struct ActionSubmissionUploadedRequest{ - pub SubmissionID:i64, - pub TargetAssetID:Option, -} - -pub struct SubmissionID(pub i64); +use crate::types::*; #[derive(Clone)] pub struct Context(crate::context::Context); @@ -88,9 +8,9 @@ macro_rules! action{ ($fname:ident,$action:expr)=>{ pub async fn $fname(&self,config:SubmissionID)->Result<(),Error>{ let url_raw=format!(concat!("{}/submissions/{}/status/",$action),self.0.base_url,config.0); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - crate::response_ok( + response_ok( self.0.post_empty_body(url).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)?; @@ -104,47 +24,75 @@ impl Context{ } pub async fn get_script(&self,config:GetScriptRequest)->Result{ let url_raw=format!("{}/scripts/{}",self.0.base_url,config.ScriptID.0); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - crate::response_ok( + response_ok( self.0.get(url).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)? .json().await.map_err(Error::Reqwest) } pub async fn create_script<'a>(&self,config:CreateScriptRequest<'a>)->Result{ let url_raw=format!("{}/scripts",self.0.base_url); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; let body=serde_json::to_string(&config).map_err(Error::JSON)?; - crate::response_ok( + response_ok( self.0.post(url,body).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)? .json().await.map_err(Error::Reqwest) } - pub async fn get_script_policy_from_hash<'a>(&self,config:ScriptPolicyHashRequest<'a>)->Result{ - let url_raw=format!("{}/script-policy/hash/{}",self.0.base_url,config.hash); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + pub async fn get_script_policies<'a>(&self,config:GetScriptPoliciesRequest<'a>)->Result,Error>{ + let url_raw=format!("{}/script-policy",self.0.base_url); + let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - crate::response_ok( + { + let mut query_pairs=url.query_pairs_mut(); + query_pairs.append_pair("Page",config.Page.to_string().as_str()); + query_pairs.append_pair("Limit",config.Limit.to_string().as_str()); + if let Some(hash)=config.FromScriptHash{ + query_pairs.append_pair("FromScriptHash",hash); + } + if let Some(script_id)=config.ToScriptID{ + query_pairs.append_pair("ToScriptID",script_id.0.to_string().as_str()); + } + if let Some(policy)=config.Policy{ + query_pairs.append_pair("Policy",(policy as i32).to_string().as_str()); + } + } + + response_ok( self.0.get(url).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)? .json().await.map_err(Error::Reqwest) } + pub async fn get_script_policy_from_hash<'a>(&self,config:HashRequest<'a>)->Result,SingleItemError>{ + let policies=self.get_script_policies(GetScriptPoliciesRequest{ + Page:1, + Limit:2, + FromScriptHash:Some(config.hash), + ToScriptID:None, + Policy:None, + }).await.map_err(SingleItemError::Other)?; + if 1Result{ let url_raw=format!("{}/script-policy",self.0.base_url); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; let body=serde_json::to_string(&config).map_err(Error::JSON)?; - crate::response_ok( + response_ok( self.0.post(url,body).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)? .json().await.map_err(Error::Reqwest) } pub async fn update_submission_model(&self,config:UpdateSubmissionModelRequest)->Result<(),Error>{ let url_raw=format!("{}/submissions/{}/model",self.0.base_url,config.SubmissionID); - let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; { url.query_pairs_mut() @@ -152,7 +100,7 @@ impl Context{ .append_pair("ModelVersion",config.ModelVersion.to_string().as_str()); } - crate::response_ok( + response_ok( self.0.post_empty_body(url).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)?; @@ -160,13 +108,13 @@ impl Context{ } pub async fn action_submission_uploaded(&self,config:ActionSubmissionUploadedRequest)->Result<(),Error>{ let url_raw=format!("{}/submissions/{}/status/validator-uploaded",self.0.base_url,config.SubmissionID); - let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::ParseError)?; + let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; if let Some(target_asset_id)=config.TargetAssetID{ url.query_pairs_mut() .append_pair("TargetAssetID",target_asset_id.to_string().as_str()); } - crate::response_ok( + response_ok( self.0.post_empty_body(url).await.map_err(Error::Reqwest)? ).await.map_err(Error::Response)?; diff --git a/validation/api/src/lib.rs b/validation/api/src/lib.rs index 49ea98d..975d595 100644 --- a/validation/api/src/lib.rs +++ b/validation/api/src/lib.rs @@ -1,61 +1,14 @@ mod context; pub use context::Cookie; +pub mod types; + #[cfg(feature="internal")] pub mod internal; #[cfg(feature="external")] pub mod external; -//lazy reexport +//lazy reexports +pub use types::Error; pub type ReqwestError=reqwest::Error; - -#[derive(Debug)] -pub enum Error{ - ParseError(url::ParseError), - Reqwest(reqwest::Error), - Response(ResponseError), - JSON(serde_json::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{} - -#[allow(dead_code)] -#[derive(Debug)] -pub struct StatusCodeWithUrlAndBody{ - pub status_code:reqwest::StatusCode, - pub url:url::Url, - pub body:String, -} - -#[derive(Debug)] -pub enum ResponseError{ - Reqwest(reqwest::Error), - StatusCodeWithUrlAndBody(StatusCodeWithUrlAndBody), -} -impl std::fmt::Display for ResponseError{ - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f,"{self:?}") - } -} -impl std::error::Error for ResponseError{} -// lazy function to draw out meaningful info from http response on failure -pub async fn response_ok(response:reqwest::Response)->Result{ - let status_code=response.status(); - if status_code.is_success(){ - Ok(response) - }else{ - let url=response.url().to_owned(); - let bytes=response.bytes().await.map_err(ResponseError::Reqwest)?; - let body=String::from_utf8_lossy(&bytes).to_string(); - Err(ResponseError::StatusCodeWithUrlAndBody(StatusCodeWithUrlAndBody{ - status_code, - url, - body, - })) - } -} diff --git a/validation/api/src/types.rs b/validation/api/src/types.rs new file mode 100644 index 0000000..adcd941 --- /dev/null +++ b/validation/api/src/types.rs @@ -0,0 +1,169 @@ +#[derive(Debug)] +pub enum Error{ + Parse(url::ParseError), + Reqwest(reqwest::Error), + Response(ResponseError), + JSON(serde_json::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{} + +#[derive(Debug)] +pub enum SingleItemError{ + DuplicateItems, + Other(Error), +} +impl std::fmt::Display for SingleItemError{ + fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ + write!(f,"{self:?}") + } +} +impl std::error::Error for SingleItemError{} + +#[allow(dead_code)] +#[derive(Debug)] +pub struct StatusCodeWithUrlAndBody{ + pub status_code:reqwest::StatusCode, + pub url:url::Url, + pub body:String, +} + +#[derive(Debug)] +pub enum ResponseError{ + Reqwest(reqwest::Error), + StatusCodeWithUrlAndBody(StatusCodeWithUrlAndBody), +} +impl std::fmt::Display for ResponseError{ + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f,"{self:?}") + } +} +impl std::error::Error for ResponseError{} +// lazy function to draw out meaningful info from http response on failure +pub async fn response_ok(response:reqwest::Response)->Result{ + let status_code=response.status(); + if status_code.is_success(){ + Ok(response) + }else{ + let url=response.url().to_owned(); + let bytes=response.bytes().await.map_err(ResponseError::Reqwest)?; + let body=String::from_utf8_lossy(&bytes).to_string(); + Err(ResponseError::StatusCodeWithUrlAndBody(StatusCodeWithUrlAndBody{ + status_code, + url, + body, + })) + } +} + +#[derive(Clone,Copy,serde::Serialize,serde::Deserialize)] +pub struct ScriptID(pub(crate)i64); +#[derive(Clone,Copy,serde::Serialize,serde::Deserialize)] +pub struct ScriptPolicyID(pub(crate)i64); + +#[allow(nonstandard_style)] +pub struct GetScriptRequest{ + pub ScriptID:ScriptID, +} +#[allow(nonstandard_style)] +#[derive(serde::Serialize)] +pub struct GetScriptsRequest<'a>{ + pub Page:u32, + pub Limit:u32, + pub Name:Option<&'a str>, + pub Hash:Option<&'a str>, + pub Source:Option<&'a str>, + pub SubmissionID:Option, +} +pub struct HashRequest<'a>{ + pub hash:&'a str, +} +#[allow(nonstandard_style)] +#[derive(serde::Deserialize)] +pub struct ScriptResponse{ + pub ID:ScriptID, + pub Name:String, + pub Hash:String, + pub Source:String, + pub SubmissionID:i64, +} +#[allow(nonstandard_style)] +#[derive(serde::Serialize)] +pub struct CreateScriptRequest<'a>{ + pub Name:&'a str, + pub Source:&'a str, + pub SubmissionID:Option, +} +#[allow(nonstandard_style)] +#[derive(serde::Deserialize)] +pub struct ScriptIDResponse{ + pub ID:ScriptID, +} + +#[derive(serde_repr::Serialize_repr,serde_repr::Deserialize_repr)] +#[repr(i32)] +pub enum Policy{ + None=0, // not yet reviewed + Allowed=1, + Blocked=2, + Delete=3, + Replace=4, +} + +#[allow(nonstandard_style)] +#[derive(serde::Serialize)] +pub struct GetScriptPoliciesRequest<'a>{ + pub Page:u32, + pub Limit:u32, + pub FromScriptHash:Option<&'a str>, + pub ToScriptID:Option, + pub Policy:Option, +} +#[allow(nonstandard_style)] +#[derive(serde::Deserialize)] +pub struct ScriptPolicyResponse{ + pub ID:ScriptPolicyID, + pub FromScriptHash:String, + pub ToScriptID:ScriptID, + pub Policy:Policy +} +#[allow(nonstandard_style)] +#[derive(serde::Serialize)] +pub struct CreateScriptPolicyRequest{ + pub FromScriptID:ScriptID, + pub ToScriptID:ScriptID, + pub Policy:Policy, +} +#[allow(nonstandard_style)] +#[derive(serde::Deserialize)] +pub struct ScriptPolicyIDResponse{ + pub ID:ScriptPolicyID, +} + +#[allow(nonstandard_style)] +#[derive(serde::Serialize)] +pub struct UpdateScriptPolicyRequest{ + pub ScriptPolicyID:ScriptPolicyID, + pub FromScriptID:Option, + pub ToScriptID:Option, + pub Policy:Option, +} + +#[allow(nonstandard_style)] +pub struct UpdateSubmissionModelRequest{ + pub SubmissionID:i64, + pub ModelID:u64, + pub ModelVersion:u64, +} + +#[allow(nonstandard_style)] +pub struct ActionSubmissionUploadedRequest{ + pub SubmissionID:i64, + pub TargetAssetID:Option, +} + +pub struct SubmissionID(pub i64); diff --git a/validation/src/publish_fix.rs b/validation/src/publish_fix.rs index d91bf14..34bf7c4 100644 --- a/validation/src/publish_fix.rs +++ b/validation/src/publish_fix.rs @@ -52,7 +52,7 @@ impl Publisher{ // that's it, the database entry does not need to be changed. // mark submission as uploaded, TargetAssetID is unchanged - self.api_internal.action_submission_uploaded(submissions_api::internal::ActionSubmissionUploadedRequest{ + self.api_internal.action_submission_uploaded(submissions_api::types::ActionSubmissionUploadedRequest{ SubmissionID:publish_info.SubmissionID, TargetAssetID:None, }).await.map_err(PublishError::ApiActionSubmissionUploaded)?; diff --git a/validation/src/publish_new.rs b/validation/src/publish_new.rs index 8cc9ac8..6ef91bc 100644 --- a/validation/src/publish_new.rs +++ b/validation/src/publish_new.rs @@ -50,7 +50,7 @@ impl Publisher{ },model_data).await.map_err(PublishError::Create)?; // note the asset id of the created model for later release, and mark the submission as uploaded - self.api.action_submission_uploaded(submissions_api::internal::ActionSubmissionUploadedRequest{ + self.api.action_submission_uploaded(submissions_api::types::ActionSubmissionUploadedRequest{ SubmissionID:publish_info.SubmissionID, TargetAssetID:Some(upload_response.AssetId), }).await.map_err(PublishError::ApiActionSubmissionPublish)?; diff --git a/validation/src/validator.rs b/validation/src/validator.rs index b277346..a6618b5 100644 --- a/validation/src/validator.rs +++ b/validation/src/validator.rs @@ -2,8 +2,6 @@ use futures::TryStreamExt; use crate::nats_types::ValidateRequest; -use submissions_api::internal::ScriptPolicyResponse; - const SCRIPT_CONCURRENCY:usize=16; enum Policy{ @@ -19,22 +17,6 @@ struct NamePolicy{ policy:Policy, } -// this is awful -fn interpret_get_script_policy_response(reponse:Result)->Result,submissions_api::Error>{ - match reponse{ - Ok(script_policy)=>Ok(Some(script_policy)), - Err(e)=>{ - if let submissions_api::Error::Response(submissions_api::ResponseError::StatusCodeWithUrlAndBody(s))=&e{ - if s.status_code.as_u16()==404{ - // wew we figured out that the resource does not exist - return Ok(None); - } - } - return Err(e); - } - } -} - #[allow(dead_code)] #[derive(Debug)] pub enum ValidateError{ @@ -42,7 +24,7 @@ pub enum ValidateError{ NotAllowed, Get(rbx_asset::cookie::GetError), ReadDom(ReadDomError), - ApiGetScriptPolicy(submissions_api::Error), + ApiGetScriptPolicy(submissions_api::types::SingleItemError), ApiGetScript(submissions_api::Error), ApiCreateScript(submissions_api::Error), ApiCreateScriptPolicy(submissions_api::Error), @@ -83,13 +65,13 @@ impl Validator{ Ok(())=>{ // update the submission model status to validated self.api.action_submission_validated( - submissions_api::internal::SubmissionID(submission_id) + submissions_api::types::SubmissionID(submission_id) ).await.map_err(ValidateError::ApiActionSubmissionValidate)?; }, Err(_)=>{ // update the submission model status to accepted self.api.action_submission_accepted( - submissions_api::internal::SubmissionID(submission_id) + submissions_api::types::SubmissionID(submission_id) ).await.map_err(ValidateError::ApiActionSubmissionValidate)?; }, } @@ -131,21 +113,19 @@ impl Validator{ let hash=std::hash::Hasher::finish(&hasher); // fetch the script policy - let script_policy=interpret_get_script_policy_response( - self.api.get_script_policy_from_hash(submissions_api::internal::ScriptPolicyHashRequest{ - hash:format!("{:016x}",hash).as_str(), - }).await - ).map_err(ValidateError::ApiGetScriptPolicy)?; + let script_policy=self.api.get_script_policy_from_hash(submissions_api::types::HashRequest{ + hash:format!("{:016x}",hash).as_str(), + }).await.map_err(ValidateError::ApiGetScriptPolicy)?; // write the policy to the script_map, fetching the replacement code if necessary if let Some(script_policy)=script_policy{ *policy=match script_policy.Policy{ - submissions_api::internal::Policy::None=>Policy::None, - submissions_api::internal::Policy::Allowed=>Policy::Allowed, - submissions_api::internal::Policy::Blocked=>Policy::Blocked, - submissions_api::internal::Policy::Delete=>Policy::Delete, - submissions_api::internal::Policy::Replace=>{ - let script=self.api.get_script(submissions_api::internal::GetScriptRequest{ + submissions_api::types::Policy::None=>Policy::None, + submissions_api::types::Policy::Allowed=>Policy::Allowed, + submissions_api::types::Policy::Blocked=>Policy::Blocked, + submissions_api::types::Policy::Delete=>Policy::Delete, + submissions_api::types::Policy::Replace=>{ + let script=self.api.get_script(submissions_api::types::GetScriptRequest{ ScriptID:script_policy.ToScriptID, }).await.map_err(ValidateError::ApiGetScript)?; Policy::Replace(script.Source) @@ -153,17 +133,17 @@ impl Validator{ }; }else{ // upload the script - let script=self.api.create_script(submissions_api::internal::CreateScriptRequest{ + let script=self.api.create_script(submissions_api::types::CreateScriptRequest{ Name:name.as_str(), Source:source.as_str(), SubmissionID:Some(validate_info.SubmissionID), }).await.map_err(ValidateError::ApiCreateScript)?; // create a None policy (pending review by yours truly) - self.api.create_script_policy(submissions_api::internal::CreateScriptPolicyRequest{ + self.api.create_script_policy(submissions_api::types::CreateScriptPolicyRequest{ ToScriptID:script.ID, FromScriptID:script.ID, - Policy:submissions_api::internal::Policy::None, + Policy:submissions_api::types::Policy::None, }).await.map_err(ValidateError::ApiCreateScriptPolicy)?; } @@ -229,7 +209,7 @@ impl Validator{ }; // update the submission to use the validated model - self.api.update_submission_model(submissions_api::internal::UpdateSubmissionModelRequest{ + self.api.update_submission_model(submissions_api::types::UpdateSubmissionModelRequest{ SubmissionID:validate_info.SubmissionID, ModelID:model_id, ModelVersion:1, //TODO