Skip to main content

args_api/endpoint/repository/
list_repository_commits.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4use super::default_ref;
5use crate::{
6    endpoint::Endpoint,
7    resource::{common::Page, repository::RepositoryCommitResource},
8};
9
10pub struct ListRepositoryCommits;
11
12impl Endpoint for ListRepositoryCommits {
13    const PATH: &'static str = "/repository/{owner}/{repo}/commits";
14    const METHOD: http::Method = http::Method::GET;
15
16    type Request = ListRepositoryCommitsRequest;
17    type Response = ListRepositoryCommitsResponse;
18}
19
20#[derive(ApiRequest, Debug, Default, Serialize, Deserialize)]
21pub struct ListRepositoryCommitsRequest {
22    #[serde(default = "default_ref")]
23    pub ref_name: String,
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub from: Option<DateTime<Utc>>,
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub to: Option<DateTime<Utc>>,
28    #[serde(default, skip_serializing_if = "Option::is_none")]
29    pub cursor: Option<String>,
30    #[serde(default, skip_serializing_if = "Option::is_none")]
31    pub limit: Option<u32>,
32}
33
34pub type ListRepositoryCommitsResponse = Page<RepositoryCommitResource>;