#![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 ActivitiesClient {
inner: HttpInner,
}
impl ActivitiesClient {
pub fn new(inner: HttpInner) -> Self {
Self { inner }
}
pub async fn get_user_activities_by_date(
&self,
username: String,
query: &GetUserActivitiesByDateQuery,
) -> Result<crate::models::ActivityDate> {
let path = format!("/users/{}/activities", username);
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.date {
pairs.append_pair("date", v);
}
drop(pairs);
}
self.inner
.execute::<crate::models::ActivityDate>(Method::GET, url)
.await
}
pub async fn get_user_repo_activity_details(
&self,
username: String,
activity_type: String,
query: &GetUserRepoActivityDetailsQuery,
) -> Result<Vec<serde_json::Value>> {
let path = format!("/users/{}/repo-activities/{}", username, activity_type);
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(ref v) = query.slug {
pairs.append_pair("slug", v);
}
if let Some(ref v) = query.date {
pairs.append_pair("date", v);
}
drop(pairs);
}
self.inner
.execute::<Vec<serde_json::Value>>(Method::GET, url)
.await
}
pub async fn top_contributors(
&self,
repo: String,
query: &TopContributorsQuery,
) -> Result<Vec<crate::models::UsersResult>> {
let path = format!("/{}/-/top-activity-users", repo);
let mut url = self.inner.url(&path)?;
{
let mut pairs = url.query_pairs_mut();
if let Some(v) = query.top {
pairs.append_pair("top", &v.to_string());
}
drop(pairs);
}
self.inner
.execute::<Vec<crate::models::UsersResult>>(Method::GET, url)
.await
}
}
#[derive(Debug, Clone, Default, Serialize)]
#[non_exhaustive]
pub struct GetUserActivitiesByDateQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
}
impl GetUserActivitiesByDateQuery {
pub fn new() -> Self {
Self::default()
}
pub fn date(mut self, v: impl Into<String>) -> Self {
self.date = Some(v.into());
self
}
}
#[derive(Debug, Clone, Default, Serialize)]
#[non_exhaustive]
pub struct GetUserRepoActivityDetailsQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
}
impl GetUserRepoActivityDetailsQuery {
pub fn new() -> Self {
Self::default()
}
pub fn slug(mut self, v: impl Into<String>) -> Self {
self.slug = 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)]
#[non_exhaustive]
pub struct TopContributorsQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub top: Option<i64>,
}
impl TopContributorsQuery {
pub fn new() -> Self {
Self::default()
}
pub fn top(mut self, v: impl Into<i64>) -> Self {
self.top = Some(v.into());
self
}
}