#![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 RankClient {
inner: HttpInner,
}
impl RankClient {
pub fn new(inner: HttpInner) -> Self {
Self { inner }
}
pub async fn get_language_list(
&self,
query: &GetLanguageListQuery,
) -> Result<crate::models::RankLanguageList> {
let path = "/ranks/repo/language-list".to_string();
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.rank_type {
pairs.append_pair("rankType", v);
}
if let Some(ref v) = query.date {
pairs.append_pair("date", v);
}
drop(pairs);
}
self.inner
.execute::<crate::models::RankLanguageList>(Method::GET, url)
.await
}
pub async fn get_repo_annual_rank(
&self,
query: &GetRepoAnnualRankQuery,
) -> Result<crate::models::GetRankResult> {
let path = "/ranks/repo/annual".to_string();
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.language {
pairs.append_pair("language", v);
}
if let Some(ref v) = query.flags {
pairs.append_pair("flags", v);
}
if let Some(ref v) = query.year {
pairs.append_pair("year", v);
}
if let Some(v) = query.top_n {
pairs.append_pair("topN", &v.to_string());
}
drop(pairs);
}
self.inner
.execute::<crate::models::GetRankResult>(Method::GET, url)
.await
}
pub async fn get_repo_daily_rank(
&self,
query: &GetRepoDailyRankQuery,
) -> Result<crate::models::GetRankResult> {
let path = "/ranks/repo/daily".to_string();
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.language {
pairs.append_pair("language", v);
}
if let Some(ref v) = query.flags {
pairs.append_pair("flags", v);
}
if let Some(ref v) = query.date {
pairs.append_pair("date", v);
}
if let Some(v) = query.top_n {
pairs.append_pair("topN", &v.to_string());
}
drop(pairs);
}
self.inner
.execute::<crate::models::GetRankResult>(Method::GET, url)
.await
}
pub async fn get_repo_monthly_rank(
&self,
query: &GetRepoMonthlyRankQuery,
) -> Result<crate::models::GetRankResult> {
let path = "/ranks/repo/monthly".to_string();
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.language {
pairs.append_pair("language", v);
}
if let Some(ref v) = query.flags {
pairs.append_pair("flags", v);
}
if let Some(ref v) = query.month {
pairs.append_pair("month", v);
}
if let Some(v) = query.top_n {
pairs.append_pair("topN", &v.to_string());
}
drop(pairs);
}
self.inner
.execute::<crate::models::GetRankResult>(Method::GET, url)
.await
}
pub async fn get_repo_weekly_rank(
&self,
query: &GetRepoWeeklyRankQuery,
) -> Result<crate::models::GetRankResult> {
let path = "/ranks/repo/weekly".to_string();
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.language {
pairs.append_pair("language", v);
}
if let Some(ref v) = query.flags {
pairs.append_pair("flags", v);
}
if let Some(ref v) = query.start {
pairs.append_pair("start", v);
}
if let Some(v) = query.top_n {
pairs.append_pair("topN", &v.to_string());
}
drop(pairs);
}
self.inner
.execute::<crate::models::GetRankResult>(Method::GET, url)
.await
}
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetLanguageListQuery {
#[serde(rename = "rankType", default, skip_serializing_if = "Option::is_none")]
pub rank_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
}
impl GetLanguageListQuery {
pub fn new() -> Self {
Self::default()
}
pub fn rank_type(mut self, v: impl Into<String>) -> Self {
self.rank_type = Some(v.into());
self
}
pub fn date(mut self, v: impl Into<String>) -> Self {
self.date = Some(v.into());
self
}
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetRepoAnnualRankQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub flags: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<String>,
#[serde(rename = "topN", default, skip_serializing_if = "Option::is_none")]
pub top_n: Option<i64>,
}
impl GetRepoAnnualRankQuery {
pub fn new() -> Self {
Self::default()
}
pub fn language(mut self, v: impl Into<String>) -> Self {
self.language = Some(v.into());
self
}
pub fn flags(mut self, v: impl Into<String>) -> Self {
self.flags = Some(v.into());
self
}
pub fn year(mut self, v: impl Into<String>) -> Self {
self.year = Some(v.into());
self
}
pub fn top_n(mut self, v: impl Into<i64>) -> Self {
self.top_n = Some(v.into());
self
}
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetRepoDailyRankQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub flags: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
#[serde(rename = "topN", default, skip_serializing_if = "Option::is_none")]
pub top_n: Option<i64>,
}
impl GetRepoDailyRankQuery {
pub fn new() -> Self {
Self::default()
}
pub fn language(mut self, v: impl Into<String>) -> Self {
self.language = Some(v.into());
self
}
pub fn flags(mut self, v: impl Into<String>) -> Self {
self.flags = Some(v.into());
self
}
pub fn date(mut self, v: impl Into<String>) -> Self {
self.date = Some(v.into());
self
}
pub fn top_n(mut self, v: impl Into<i64>) -> Self {
self.top_n = Some(v.into());
self
}
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetRepoMonthlyRankQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub flags: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub month: Option<String>,
#[serde(rename = "topN", default, skip_serializing_if = "Option::is_none")]
pub top_n: Option<i64>,
}
impl GetRepoMonthlyRankQuery {
pub fn new() -> Self {
Self::default()
}
pub fn language(mut self, v: impl Into<String>) -> Self {
self.language = Some(v.into());
self
}
pub fn flags(mut self, v: impl Into<String>) -> Self {
self.flags = Some(v.into());
self
}
pub fn month(mut self, v: impl Into<String>) -> Self {
self.month = Some(v.into());
self
}
pub fn top_n(mut self, v: impl Into<i64>) -> Self {
self.top_n = Some(v.into());
self
}
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetRepoWeeklyRankQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub flags: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub start: Option<String>,
#[serde(rename = "topN", default, skip_serializing_if = "Option::is_none")]
pub top_n: Option<i64>,
}
impl GetRepoWeeklyRankQuery {
pub fn new() -> Self {
Self::default()
}
pub fn language(mut self, v: impl Into<String>) -> Self {
self.language = Some(v.into());
self
}
pub fn flags(mut self, v: impl Into<String>) -> Self {
self.flags = Some(v.into());
self
}
pub fn start(mut self, v: impl Into<String>) -> Self {
self.start = Some(v.into());
self
}
pub fn top_n(mut self, v: impl Into<i64>) -> Self {
self.top_n = Some(v.into());
self
}
}