submissions-api: deduplicate simple endpoints with crazy macro
This commit is contained in:
parent
732598266c
commit
cc7df064be
@ -3,12 +3,27 @@ use crate::types::*;
|
|||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Context(crate::context::Context);
|
pub struct Context(crate::context::Context);
|
||||||
|
|
||||||
|
// conditionally include specified query pairs
|
||||||
|
macro_rules! query_pairs{
|
||||||
|
($url:expr,)=>{
|
||||||
|
$url
|
||||||
|
};
|
||||||
|
($url:expr,$(($param:expr,$value:expr))+)=>{
|
||||||
|
{
|
||||||
|
let mut url=$url;
|
||||||
|
url.query_pairs_mut()
|
||||||
|
$(.append_pair($param,$value))*;
|
||||||
|
url
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// there are lots of action endpoints and they all follow the same pattern
|
// there are lots of action endpoints and they all follow the same pattern
|
||||||
macro_rules! action{
|
macro_rules! action{
|
||||||
($fname:ident,$action:expr)=>{
|
($system:expr,$fname:ident,$config:ident,$config_type:ident,$action:expr,$config_submission_id:expr,$(($param:expr,$value:expr))*)=>{
|
||||||
pub async fn $fname(&self,config:SubmissionID)->Result<(),Error>{
|
pub async fn $fname(&self,$config:$config_type)->Result<(),Error>{
|
||||||
let url_raw=format!(concat!("{}/submissions/{}/status/",$action),self.0.base_url,config.0);
|
let url_raw=format!(concat!("{}/",$system,"/{}/status/",$action),self.0.base_url,$config_submission_id);
|
||||||
let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?;
|
let url=query_pairs!(reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?,$(($param,$value))*);
|
||||||
|
|
||||||
response_ok(
|
response_ok(
|
||||||
self.0.post_empty_body(url).await.map_err(Error::Reqwest)?
|
self.0.post_empty_body(url).await.map_err(Error::Reqwest)?
|
||||||
@ -135,50 +150,16 @@ impl Context{
|
|||||||
).await.map_err(Error::Response)?
|
).await.map_err(Error::Response)?
|
||||||
.json().await.map_err(Error::ReqwestJson)
|
.json().await.map_err(Error::ReqwestJson)
|
||||||
}
|
}
|
||||||
pub async fn update_submission_validated_model(&self,config:UpdateSubmissionModelRequest)->Result<(),Error>{
|
// simple submission endpoints
|
||||||
let url_raw=format!("{}/submissions/{}/validated-model",self.0.base_url,config.SubmissionID);
|
action!("submissions",action_submission_validated,config,SubmissionID,"validator-validated",config.0,);
|
||||||
let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?;
|
action!("submissions",update_submission_validated_model,config,UpdateSubmissionModelRequest,"validated-model",config.SubmissionID,
|
||||||
|
("ValidatedModelID",config.ModelID.to_string().as_str())
|
||||||
{
|
("ValidatedModelVersion",config.ModelVersion.to_string().as_str())
|
||||||
url.query_pairs_mut()
|
);
|
||||||
.append_pair("ValidatedModelID",config.ModelID.to_string().as_str())
|
action!("submissions",action_submission_uploaded,config,ActionSubmissionUploadedRequest,"validator-uploaded",config.SubmissionID,
|
||||||
.append_pair("ValidatedModelVersion",config.ModelVersion.to_string().as_str());
|
("UploadedAssetID",config.UploadedAssetID.to_string().as_str())
|
||||||
}
|
);
|
||||||
|
action!("submissions",action_submission_accepted,config,ActionSubmissionAcceptedRequest,"validator-failed",config.SubmissionID,
|
||||||
response_ok(
|
("StatusMessage",config.StatusMessage.as_str())
|
||||||
self.0.post_empty_body(url).await.map_err(Error::Reqwest)?
|
);
|
||||||
).await.map_err(Error::Response)?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
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::Parse)?;
|
|
||||||
|
|
||||||
{
|
|
||||||
url.query_pairs_mut()
|
|
||||||
.append_pair("UploadedAssetID",config.UploadedAssetID.to_string().as_str());
|
|
||||||
}
|
|
||||||
response_ok(
|
|
||||||
self.0.post_empty_body(url).await.map_err(Error::Reqwest)?
|
|
||||||
).await.map_err(Error::Response)?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
pub async fn action_submission_accepted(&self,config:ActionSubmissionAcceptedRequest)->Result<(),Error>{
|
|
||||||
let url_raw=format!("{}/submissions/{}/status/validator-failed",self.0.base_url,config.SubmissionID);
|
|
||||||
let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?;
|
|
||||||
|
|
||||||
{
|
|
||||||
url.query_pairs_mut()
|
|
||||||
.append_pair("StatusMessage",config.StatusMessage.as_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
response_ok(
|
|
||||||
self.0.post_empty_body(url).await.map_err(Error::Reqwest)?
|
|
||||||
).await.map_err(Error::Response)?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
action!(action_submission_validated,"validator-validated");
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user