use super::ForgejoApi;
use crate::network::ForgeApi;
use crate::network::net::{ApiEndpoint, Net};
use crate::network::{error, responses::ServerVersion};
use url::Url;
struct VersionEndpoint<'a> {
api: &'a ForgejoApi,
base_url: Url,
}
impl ApiEndpoint<ForgejoApi, ServerVersion> for VersionEndpoint<'_> {
fn api(&self) -> &ForgejoApi {
self.api
}
fn url(&self) -> Url {
self.base_url.join("version").expect("Valid URL path")
}
}
pub fn get_version(api: &ForgejoApi, net: &Net) -> Result<ServerVersion, error::Error> {
let base_url = api.base_url().clone();
let endpoint = VersionEndpoint { api, base_url };
let server_version = net.call(&endpoint)?;
Ok(server_version)
}