#![allow(clippy::all)]
#![allow(missing_docs)]
#![allow(unused_imports)]
#![allow(unused_mut)]
use reqwest::Method;
use serde::Serialize;
use crate::error::{ApiError, Result};
use crate::http::HttpInner;
use crate::models;
#[derive(Debug, Clone)]
pub struct RegistriesClient {
inner: HttpInner,
}
impl RegistriesClient {
pub fn new(inner: HttpInner) -> Self {
Self { inner }
}
pub async fn delete_package(
&self,
slug: String,
type_: String,
name: String,
) -> Result<serde_json::Value> {
let path = format!("/{}/-/packages/{}/{}", slug, type_, name);
let mut url = self.inner.url(&path)?;
self.inner
.execute::<serde_json::Value>(Method::DELETE, url)
.await
}
pub async fn delete_package_tag(
&self,
slug: String,
type_: String,
name: String,
tag: String,
) -> Result<serde_json::Value> {
let path = format!("/{}/-/packages/{}/{}/-/tag/{}", slug, type_, name, tag);
let mut url = self.inner.url(&path)?;
self.inner
.execute::<serde_json::Value>(Method::DELETE, url)
.await
}
pub async fn delete_registry(&self, registry: String) -> Result<serde_json::Value> {
let path = format!("/{}", registry);
let mut url = self.inner.url(&path)?;
self.inner
.execute::<serde_json::Value>(Method::DELETE, url)
.await
}
pub async fn get_group_sub_registries(
&self,
slug: String,
query: &GetGroupSubRegistriesQuery,
) -> Result<Vec<crate::models::Registry4User>> {
let path = format!("/{}/-/registries", slug);
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(v) = query.page {
pairs.append_pair("page", &v.to_string());
}
if let Some(v) = query.page_size {
pairs.append_pair("page_size", &v.to_string());
}
if let Some(ref v) = query.registry_type {
pairs.append_pair("registry_type", v);
}
if let Some(ref v) = query.filter_type {
pairs.append_pair("filter_type", v);
}
if let Some(ref v) = query.order_by {
pairs.append_pair("order_by", v);
}
if let Some(v) = query.desc {
pairs.append_pair("desc", &v.to_string());
}
if let Some(ref v) = query.descendant {
pairs.append_pair("descendant", v);
}
if let Some(ref v) = query.search {
pairs.append_pair("search", v);
}
drop(pairs);
}
self.inner
.execute::<Vec<crate::models::Registry4User>>(Method::GET, url)
.await
}
pub async fn get_package(
&self,
slug: String,
type_: String,
name: String,
) -> Result<crate::models::PackageDetail> {
let path = format!("/{}/-/packages/{}/{}", slug, type_, name);
let mut url = self.inner.url(&path)?;
self.inner
.execute::<crate::models::PackageDetail>(Method::GET, url)
.await
}
pub async fn get_package_tag_detail(
&self,
slug: String,
type_: String,
name: String,
tag: String,
query: &GetPackageTagDetailQuery,
) -> Result<crate::models::TagDetail> {
let path = format!("/{}/-/packages/{}/{}/-/tag/{}", slug, type_, name, tag);
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.sha256 {
pairs.append_pair("sha256", v);
}
if let Some(ref v) = query.arch {
pairs.append_pair("arch", v);
}
drop(pairs);
}
self.inner
.execute::<crate::models::TagDetail>(Method::GET, url)
.await
}
pub async fn get_package_tag_provenance(
&self,
slug: String,
type_: String,
name: String,
tag: String,
) -> Result<crate::models::Provenance> {
let path = format!(
"/{}/-/packages/{}/{}/-/tag/{}/provenance",
slug, type_, name, tag
);
let mut url = self.inner.url(&path)?;
self.inner
.execute::<crate::models::Provenance>(Method::GET, url)
.await
}
pub async fn list_package_tags(
&self,
slug: String,
type_: String,
name: String,
query: &ListPackageTagsQuery,
) -> Result<Vec<crate::models::RegistryPackageTag>> {
let path = format!("/{}/-/packages/{}/{}/-/tags", slug, type_, name);
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(v) = query.page {
pairs.append_pair("page", &v.to_string());
}
if let Some(v) = query.page_size {
pairs.append_pair("page_size", &v.to_string());
}
if let Some(ref v) = query.ordering {
pairs.append_pair("ordering", v);
}
if let Some(ref v) = query.tag_name {
pairs.append_pair("tag_name", v);
}
drop(pairs);
}
self.inner
.execute::<Vec<crate::models::RegistryPackageTag>>(Method::GET, url)
.await
}
pub async fn list_packages(
&self,
slug: String,
query: &ListPackagesQuery,
) -> Result<Vec<crate::models::Package>> {
let path = format!("/{}/-/packages", slug);
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.type_ {
pairs.append_pair("type", v);
}
if let Some(v) = query.page {
pairs.append_pair("page", &v.to_string());
}
if let Some(v) = query.page_size {
pairs.append_pair("page_size", &v.to_string());
}
if let Some(ref v) = query.ordering {
pairs.append_pair("ordering", v);
}
if let Some(ref v) = query.name {
pairs.append_pair("name", v);
}
drop(pairs);
}
self.inner
.execute::<Vec<crate::models::Package>>(Method::GET, url)
.await
}
pub async fn set_registry_visibility(
&self,
registry: String,
query: &SetRegistryVisibilityQuery,
) -> Result<serde_json::Value> {
let path = format!("/{}/-/settings/set_visibility", registry);
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.visibility {
pairs.append_pair("visibility", v);
}
drop(pairs);
}
self.inner
.execute::<serde_json::Value>(Method::POST, url)
.await
}
}
#[derive(Debug, Clone, Default, Serialize)]
#[non_exhaustive]
pub struct GetGroupSubRegistriesQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub registry_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filter_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order_by: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub desc: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub descendant: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub search: Option<String>,
}
impl GetGroupSubRegistriesQuery {
pub fn new() -> Self {
Self::default()
}
pub fn page(mut self, v: impl Into<i64>) -> Self {
self.page = Some(v.into());
self
}
pub fn page_size(mut self, v: impl Into<i64>) -> Self {
self.page_size = Some(v.into());
self
}
pub fn registry_type(mut self, v: impl Into<String>) -> Self {
self.registry_type = Some(v.into());
self
}
pub fn filter_type(mut self, v: impl Into<String>) -> Self {
self.filter_type = Some(v.into());
self
}
pub fn order_by(mut self, v: impl Into<String>) -> Self {
self.order_by = Some(v.into());
self
}
pub fn desc(mut self, v: impl Into<bool>) -> Self {
self.desc = Some(v.into());
self
}
pub fn descendant(mut self, v: impl Into<String>) -> Self {
self.descendant = Some(v.into());
self
}
pub fn search(mut self, v: impl Into<String>) -> Self {
self.search = Some(v.into());
self
}
}
#[derive(Debug, Clone, Default, Serialize)]
#[non_exhaustive]
pub struct GetPackageTagDetailQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub arch: Option<String>,
}
impl GetPackageTagDetailQuery {
pub fn new() -> Self {
Self::default()
}
pub fn sha256(mut self, v: impl Into<String>) -> Self {
self.sha256 = Some(v.into());
self
}
pub fn arch(mut self, v: impl Into<String>) -> Self {
self.arch = Some(v.into());
self
}
}
#[derive(Debug, Clone, Default, Serialize)]
#[non_exhaustive]
pub struct ListPackageTagsQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ordering: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tag_name: Option<String>,
}
impl ListPackageTagsQuery {
pub fn new() -> Self {
Self::default()
}
pub fn page(mut self, v: impl Into<i64>) -> Self {
self.page = Some(v.into());
self
}
pub fn page_size(mut self, v: impl Into<i64>) -> Self {
self.page_size = Some(v.into());
self
}
pub fn ordering(mut self, v: impl Into<String>) -> Self {
self.ordering = Some(v.into());
self
}
pub fn tag_name(mut self, v: impl Into<String>) -> Self {
self.tag_name = Some(v.into());
self
}
}
#[derive(Debug, Clone, Default, Serialize)]
#[non_exhaustive]
pub struct ListPackagesQuery {
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ordering: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
impl ListPackagesQuery {
pub fn new() -> Self {
Self::default()
}
pub fn type_(mut self, v: impl Into<String>) -> Self {
self.type_ = Some(v.into());
self
}
pub fn page(mut self, v: impl Into<i64>) -> Self {
self.page = Some(v.into());
self
}
pub fn page_size(mut self, v: impl Into<i64>) -> Self {
self.page_size = Some(v.into());
self
}
pub fn ordering(mut self, v: impl Into<String>) -> Self {
self.ordering = Some(v.into());
self
}
pub fn name(mut self, v: impl Into<String>) -> Self {
self.name = Some(v.into());
self
}
}
#[derive(Debug, Clone, Default, Serialize)]
#[non_exhaustive]
pub struct SetRegistryVisibilityQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub visibility: Option<String>,
}
impl SetRegistryVisibilityQuery {
pub fn new() -> Self {
Self::default()
}
pub fn visibility(mut self, v: impl Into<String>) -> Self {
self.visibility = Some(v.into());
self
}
}