#![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 SearchClient {
inner: HttpInner,
}
impl SearchClient {
pub fn new(inner: HttpInner) -> Self {
Self { inner }
}
pub async fn list_public_repos(
&self,
query: &ListPublicReposQuery,
) -> Result<Vec<crate::models::Repos4UserBase>> {
let path = "/search/public-repos".to_string();
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.key {
pairs.append_pair("key", v);
}
if let Some(ref v) = query.flags {
pairs.append_pair("flags", v);
}
if let Some(ref v) = query.flags_match {
pairs.append_pair("flags_match", 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(v) = query.top_n {
pairs.append_pair("topN", &v.to_string());
}
drop(pairs);
}
self.inner
.execute::<Vec<crate::models::Repos4UserBase>>(Method::GET, url)
.await
}
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct ListPublicReposQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub flags: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub flags_match: 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(rename = "topN", default, skip_serializing_if = "Option::is_none")]
pub top_n: Option<i64>,
}
impl ListPublicReposQuery {
pub fn new() -> Self {
Self::default()
}
pub fn key(mut self, v: impl Into<String>) -> Self {
self.key = Some(v.into());
self
}
pub fn flags(mut self, v: impl Into<String>) -> Self {
self.flags = Some(v.into());
self
}
pub fn flags_match(mut self, v: impl Into<String>) -> Self {
self.flags_match = 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 top_n(mut self, v: impl Into<i64>) -> Self {
self.top_n = Some(v.into());
self
}
}