use crate::internal::request::urlencoding;
use crate::pagination::{ListOptions, QueryEncode};
use crate::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreatePushMirrorOption {
pub interval: String,
#[serde(rename = "remote_address")]
pub remote_address: String,
#[serde(rename = "remote_password")]
pub remote_password: String,
#[serde(rename = "remote_username")]
pub remote_username: String,
#[serde(rename = "sync_on_commit")]
pub sync_on_commit: bool,
}
#[derive(Debug, Clone, Default)]
pub struct ListPushMirrorOptions {
pub list_options: ListOptions,
}
impl QueryEncode for ListPushMirrorOptions {
fn query_encode(&self) -> String {
self.list_options.query_encode()
}
}
#[derive(Debug, Clone, Default)]
pub struct ListRepoTopicsOptions {
pub list_options: ListOptions,
}
impl QueryEncode for ListRepoTopicsOptions {
fn query_encode(&self) -> String {
self.list_options.query_encode()
}
}
#[derive(Debug, Clone, Default)]
pub struct ListStargazersOptions {
pub list_options: ListOptions,
}
impl QueryEncode for ListStargazersOptions {
fn query_encode(&self) -> String {
self.list_options.query_encode()
}
}
#[derive(Debug, Clone, Default)]
pub struct ListCommitOptions {
pub list_options: ListOptions,
pub sha: String,
pub path: String,
pub stat: bool,
pub verification: bool,
pub files: bool,
pub not: String,
}
impl QueryEncode for ListCommitOptions {
fn query_encode(&self) -> String {
let mut out = self.list_options.query_encode();
if !self.sha.is_empty() {
out.push_str(&format!("&sha={}", urlencoding(&self.sha)));
}
if !self.path.is_empty() {
out.push_str(&format!("&path={}", urlencoding(&self.path)));
}
out.push_str(&format!("&stat={}", self.stat));
out.push_str(&format!("&verification={}", self.verification));
out.push_str(&format!("&files={}", self.files));
if !self.not.is_empty() {
out.push_str(&format!("¬={}", urlencoding(&self.not)));
}
out
}
}
#[derive(Debug, Clone, Default)]
pub struct ListTreeOptions {
pub list_options: ListOptions,
pub r#ref: String,
pub recursive: bool,
}
impl QueryEncode for ListTreeOptions {
fn query_encode(&self) -> String {
let mut out = self.list_options.query_encode();
if self.recursive {
out.push_str("&recursive=1");
}
out
}
}
#[derive(Debug, Clone, Default)]
pub struct ListForksOptions {
pub list_options: ListOptions,
}
impl QueryEncode for ListForksOptions {
fn query_encode(&self) -> String {
self.list_options.query_encode()
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateForkOption {
pub organization: Option<String>,
pub name: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct ListRepoGitHooksOptions {
pub list_options: ListOptions,
}
impl QueryEncode for ListRepoGitHooksOptions {
fn query_encode(&self) -> String {
self.list_options.query_encode()
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EditGitHookOption {
pub content: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetRepoNoteOptions {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub verification: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub files: Option<bool>,
}