#![warn(missing_docs)]
use std::collections::HashMap;
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct AccountInfo {
pub _account_id: Option<u64>,
pub name: Option<String>,
pub email: Option<String>,
pub username: Option<String>,
pub secondary_emails: Option<Vec<String>>,
pub _more_accounts: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ActionInfo {
pub method: Option<String>,
pub label: Option<String>,
pub title: Option<String>,
pub enabled: Option<String>,
}
#[allow(non_camel_case_types)]
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
pub enum ChangeInfoChangeStatus {
NEW,
MERGED,
ABANDONED,
DRAFT,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct LabelInfo {
pub optional: Option<bool>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ChangeMessageInfo {
pub id: String,
pub author: Option<AccountInfo>,
pub date: String,
pub message: String,
pub tag: Option<String>,
pub _revision_number: Option<u16>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct FetchInfo {
pub url: String,
#[serde(rename="ref")] pub reference: String,
pub commands: Option<HashMap<String, String>>,
}
impl FetchInfo {
pub fn get_reference_string(&self) -> &str {
&self.reference.trim_left_matches("refs/changes/")[3..]
}
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct GitPersonInfo {
pub name: String,
pub email: String,
pub date: String,
pub tz: i32,
}
#[allow(missing_docs)]
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct CommitInfoParents {
pub commit: String,
pub author: Option<GitPersonInfo>,
pub committer: Option<GitPersonInfo>,
pub subject: String,
pub message: Option<String>,
pub web_links: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct CommitInfo {
pub commit: Option<String>,
pub parents: Option<Vec<CommitInfoParents>>,
pub author: Option<GitPersonInfo>,
pub committer: Option<GitPersonInfo>,
pub subject: Option<String>,
pub message: Option<String>,
pub web_links: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct FileInfo {
pub status: Option<String>,
pub binary: Option<bool>,
pub old_path: Option<String>,
pub lines_inserted: Option<u64>,
pub lines_deleted: Option<String>,
pub size_delta: Option<u64>,
pub size: Option<u64>,
}
#[allow(non_camel_case_types)]
#[allow(missing_docs)]
#[derive(Deserialize, Serialize, Debug, Clone)]
pub enum RevisionInfoChangeKind {
#[allow(missing_docs)]
REWORK,
#[allow(missing_docs)]
TRIVIAL_REBASE,
#[allow(missing_docs)]
MERGE_FIRST_PARENT_UPDATE,
#[allow(missing_docs)]
NO_CODE_CHANGE,
#[allow(missing_docs)]
NO_CHANGE,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct RevisionInfo {
pub draft: Option<bool>,
pub kind: Option<RevisionInfoChangeKind>,
pub has_draft_comments: Option<bool>,
pub _number: u64,
pub created: Option<String>,
pub fetch: HashMap<String, FetchInfo>,
pub uploader: Option<AccountInfo>,
#[serde(rename="ref")] pub reference: Option<String>,
pub commit: Option<CommitInfo>,
pub files: Option<HashMap<String, FileInfo>>,
pub actions: Option<HashMap<String, ActionInfo>>,
pub reviewed: Option<bool>,
#[serde(rename="messageWithFooter")] pub message_with_footer: Option<String>,
pub push_certificate: Option<PushCertificateInfo>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct PushCertificateInfo {
pub certificate: String,
pub key: GpgKeyInfo,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct GpgKeyInfo {
pub id: Option<String>,
pub fingerprint: Option<String>,
pub user_ids: String,
pub key: String,
pub status: Option<String>,
pub problems: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ProblemInfo {
pub message: String,
pub status: Option<String>,
pub outcome: Option<String>,
}
#[allow(non_camel_case_types)]
#[derive(Deserialize, Serialize, Debug, Clone)]
pub enum ProjectInfo_ProjectState {
ACTIVE,
READONLY,
HIDDEN,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct WebLinkInfo {
pub name: String,
pub url: String,
pub image_url: String,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ProjectInfo {
pub name: Option<String>,
pub id: String,
pub parent: Option<String>,
pub description: Option<String>,
pub state: Option<ProjectInfo_ProjectState>,
pub branches: Option<HashMap<String, String>>,
pub web_links: Option<Vec<WebLinkInfo>>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ReviewerUpdateInfo {
pub updated: String,
pub updated_by: AccountInfo,
pub reviewer: AccountInfo,
pub state: ReviewerState,
}
#[allow(non_camel_case_types)]
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Hash)]
pub enum ReviewerState {
REVIEWER,
CC,
REMOVED,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ChangeInfo {
pub kind: Option<String>,
pub id: String,
pub project: String,
pub branch: String,
pub topic: Option<String>,
pub change_id: String,
pub subject: String,
pub status: ChangeInfoChangeStatus,
pub created: String,
pub updated: String,
pub submitted: Option<String>,
pub starred: Option<bool>,
pub stars: Option<Vec<String>>,
pub reviewed: Option<bool>,
pub submit_type: Option<String>,
pub mergeable: Option<bool>,
pub insertions: u16,
pub deletions: u16,
pub _sortkey: Option<String>,
pub _number: u64,
pub owner: AccountInfo,
pub action: Option<ActionInfo>,
pub actions: Option<Vec<ActionInfo>>,
pub labels: Option<LabelInfo>,
pub permitted_labels: Option<HashMap<String, Vec<String>>>,
pub removable_reviewers: Option<Vec<AccountInfo>>,
pub reviewers: Option<HashMap<ReviewerState, AccountInfo>>,
pub reviewer_updates: Option<Vec<ReviewerUpdateInfo>>,
pub messages: Option<Vec<ChangeMessageInfo>>,
pub current_revision: Option<String>,
pub revisions: Option<HashMap<String, RevisionInfo>>,
pub _more_changes: Option<bool>,
pub problems: Option<Vec<ProblemInfo>>,
pub hashtags: Option<Vec<String>>,
pub submittable: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct ChangeInput {
pub project: String,
pub branch: String,
pub subject: String,
pub topic: Option<String>,
pub status: Option<String>,
pub base_change: Option<String>,
pub new_branch: Option<bool>,
pub merge: Option<MergeInput>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct MergeInput {
pub source: String,
pub strategy: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ReviewerInfo {
pub _account_id: Option<u64>,
pub name: Option<String>,
pub email: Option<String>,
pub secondary_emails: Option<Vec<String>>,
pub username: Option<String>,
pub _more_accounts: Option<String>,
kind: Option<String>,
pub approvals: HashMap<String, String>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct AddReviewerResult {
pub input: Option<String>,
pub reviewers: Option<Vec<ReviewerInfo>>,
pub ccs: Option<Vec<ReviewerInfo>>,
pub error: Option<String>,
pub confirm: Option<bool>,
}
#[derive(Deserialize, Serialize, Debug, Clone, Default)]
pub struct ReviewerInput {
pub reviewer: String,
pub state: Option<ReviewerState>,
pub confirmed: Option<bool>,
}
#[allow(non_camel_case_types)]
#[derive(Deserialize, Serialize, Debug)]
pub enum AbandonInputNotify {
NONE,
OWNER,
OWNER_REVIEWERS,
ALL,
}
#[derive(Deserialize, Serialize, Debug)]
pub struct AbandonInput {
pub message: Option<String>,
pub notify: Option<AbandonInputNotify>,
}
#[derive(Deserialize, Serialize, Debug)]
pub struct RestoreInput {
pub message: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct CommentRange {
pub start_line: u64,
pub start_character: u64,
pub end_line: u64,
pub end_character: u64,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct CommentInput {
pub kind: Option<String>,
pub id: Option<String>,
pub path: Option<String>,
pub side: Option<String>,
pub line: Option<u64>,
pub range: Option<CommentRange>,
pub in_reply_to: Option<String>,
pub updated: Option<String>,
pub message: Option<String>,
pub tag: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ReviewInput {
pub message: Option<String>,
pub labels: Option<HashMap<String, i8>>,
pub comments: Option<HashMap<String, CommentInput>>,
pub strict_labels: Option<bool>,
pub drafts: Option<String>,
pub notify: Option<String>,
pub on_behalf_of: Option<String>,
pub tag: Option<String>,
pub omit_duplicate_comments: Option<bool>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ReviewInfo {
pub labels: HashMap<String, i8>,
}