use crate::{
api_definitions::{GetModelVersion, ListModelVersions},
errors::ReplicateError,
};
#[derive(Clone, Debug)]
pub struct Version {
pub parent: crate::config::Config,
}
impl Version {
pub fn new(rep: crate::config::Config) -> Self {
Self { parent: rep }
}
pub fn get(
&self,
model_owner: &str,
model_name: &str,
version_id: &str,
) -> Result<GetModelVersion, ReplicateError> {
let client = reqwest::blocking::Client::new();
let response = client
.get(format!(
"{}/models/{}/{}/versions/{}",
self.parent.base_url, model_owner, model_name, version_id
))
.header("Authorization", format!("Token {}", self.parent.auth))
.header("User-Agent", &self.parent.user_agent)
.send()?;
if !response.status().is_success() {
return Err(ReplicateError::ResponseError(response.text()?));
}
let response_string = response.text()?;
let response_struct: GetModelVersion = serde_json::from_str(&response_string)?;
Ok(response_struct)
}
pub fn list(
&self,
model_owner: &str,
model_name: &str,
) -> Result<ListModelVersions, ReplicateError> {
let client = reqwest::blocking::Client::new();
let response = client
.get(format!(
"{}/models/{}/{}/versions",
self.parent.base_url, model_owner, model_name
))
.header("Authorization", format!("Token {}", self.parent.auth))
.header("User-Agent", &self.parent.user_agent)
.send()?;
if !response.status().is_success() {
return Err(ReplicateError::ResponseError(response.text()?));
}
let response_string = response.text()?;
let response_struct: ListModelVersions = serde_json::from_str(&response_string)?;
Ok(response_struct)
}
}