use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Repository {
pub id: u64,
pub name: String,
pub full_name: String,
pub description: Option<String>,
pub private: bool,
pub fork: bool,
pub html_url: String,
pub clone_url: String,
pub ssh_url: String,
pub default_branch: String,
pub stargazers_count: u64,
pub forks_count: u64,
pub open_issues_count: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Branch {
pub name: String,
pub commit: CommitRef,
pub protected: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CommitRef {
pub sha: String,
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Commit {
pub sha: String,
pub message: String,
pub author: Option<GitUser>,
pub committer: Option<GitUser>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GitUser {
pub name: String,
pub email: String,
pub date: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: u64,
pub login: String,
pub name: Option<String>,
pub email: Option<String>,
pub avatar_url: String,
pub html_url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileContent {
pub name: String,
pub path: String,
pub sha: String,
pub size: u64,
pub content: Option<String>,
pub encoding: Option<String>,
pub download_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TreeEntry {
pub path: String,
pub mode: String,
pub sha: String,
#[serde(rename = "type")]
pub entry_type: String,
pub size: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Tree {
pub sha: String,
pub tree: Vec<TreeEntry>,
pub truncated: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Reference {
#[serde(rename = "ref")]
pub ref_name: String,
pub node_id: String,
pub url: String,
pub object: RefObject,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RefObject {
pub sha: String,
#[serde(rename = "type")]
pub object_type: String,
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateTreeEntry {
pub path: String,
pub mode: String,
pub content: Option<String>,
pub sha: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Release {
pub id: u64,
pub tag_name: String,
pub name: Option<String>,
pub body: Option<String>,
pub draft: bool,
pub prerelease: bool,
pub html_url: String,
pub tarball_url: Option<String>,
pub zipball_url: Option<String>,
#[serde(default)]
pub assets: Vec<ReleaseAsset>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReleaseAsset {
pub id: u64,
pub name: String,
pub content_type: String,
pub size: u64,
pub download_count: u64,
pub browser_download_url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Blob {
pub sha: String,
pub url: String,
}