diff --git a/validation/api/src/internal.rs b/validation/api/src/internal.rs index 0c18e1f..b4bf484 100644 --- a/validation/api/src/internal.rs +++ b/validation/api/src/internal.rs @@ -31,6 +31,47 @@ impl Context{ ).await.map_err(Error::Response)? .json().await.map_err(Error::Reqwest) } + pub async fn get_scripts<'a>(&self,config:GetScriptsRequest<'a>)->Result<Vec<ScriptResponse>,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<Option<ScriptResponse>,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<scripts.len(){ + return Err(SingleItemError::DuplicateItems); + } + Ok(scripts.into_iter().next()) + } pub async fn create_script<'a>(&self,config:CreateScriptRequest<'a>)->Result<ScriptIDResponse,Error>{ let url_raw=format!("{}/scripts",self.0.base_url); let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?;