pub mod request {
use url::Url;
use crate::{
errors::OapiError,
rest::get::{Get, GetNoStream},
};
#[derive(Debug, Clone)]
pub struct RetrieveModelRequest<'a> {
pub model: &'a str,
}
impl Get for RetrieveModelRequest<'_> {
fn build_url(&self, base_url: &str) -> Result<String, OapiError> {
let mut url =
Url::parse(base_url.trim_end_matches('/')).map_err(OapiError::UrlError)?;
url.path_segments_mut()
.map_err(|_| OapiError::UrlCannotBeBase(base_url.to_string()))?
.push("models")
.push(self.model);
Ok(url.to_string())
}
}
impl GetNoStream for RetrieveModelRequest<'_> {
type Response = crate::models::Model;
}
}
#[cfg(test)]
mod tests {
use super::request::RetrieveModelRequest;
use crate::rest::get::Get;
#[test]
fn test_build_url() {
let request = RetrieveModelRequest { model: "gpt-4o" };
let url = request.build_url("https://api.openai.com/v1").unwrap();
assert_eq!(url, "https://api.openai.com/v1/models/gpt-4o");
}
}