jinxapi_github/v1_1_4/request/
repos_get_contributors_stats.rs

1//! Get all contributor commit activity
2//! 
3//! Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information:
4//! 
5//! *   `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).
6//! *   `a` - Number of additions
7//! *   `d` - Number of deletions
8//! *   `c` - Number of commits
9//! 
10//! [API method documentation](https://docs.github.com/rest/reference/repos#get-all-contributor-commit-activity)
11
12
13fn url_string(
14    base_url: &str,
15    p_owner: &str,
16    p_repo: &str,
17) -> Result<String, crate::v1_1_4::ApiError> {
18    let trimmed = if base_url.is_empty() {
19        "https://api.github.com"
20    } else {
21        base_url.trim_end_matches('/')
22    };
23    let mut url = String::with_capacity(trimmed.len() + 45);
24    url.push_str(trimmed);
25    url.push_str("/repos/");
26    ::querylizer::Simple::extend(&mut url, &p_owner, false, &::querylizer::encode_path)?;
27    url.push('/');
28    ::querylizer::Simple::extend(&mut url, &p_repo, false, &::querylizer::encode_path)?;
29    url.push_str("/stats/contributors");
30    Ok(url)
31}
32
33#[cfg(feature = "hyper")]
34pub fn http_builder(
35    base_url: &str,
36    p_owner: &str,
37    p_repo: &str,
38    h_user_agent: &str,
39    h_accept: ::std::option::Option<&str>,
40) -> Result<::http::request::Builder, crate::v1_1_4::ApiError> {
41    let url = url_string(
42        base_url,
43        p_owner,
44        p_repo,
45    )?;
46    let mut builder = ::http::request::Request::get(url);
47    builder = builder.header(
48        "User-Agent",
49        &::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?
50    );
51    if let Some(value) = &h_accept {
52        builder = builder.header(
53            "Accept",
54            &::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?
55        );
56    }
57    Ok(builder)
58}
59
60#[cfg(feature = "hyper")]
61#[inline]
62pub fn hyper_request(
63    builder: ::http::request::Builder,
64) -> Result<::http::request::Request<::hyper::Body>, crate::v1_1_4::ApiError> {
65    Ok(builder.body(::hyper::Body::empty())?)
66}
67
68#[cfg(feature = "reqwest")]
69pub fn reqwest_builder(
70    base_url: &str,
71    p_owner: &str,
72    p_repo: &str,
73    h_user_agent: &str,
74    h_accept: ::std::option::Option<&str>,
75) -> Result<::reqwest::Request, crate::v1_1_4::ApiError> {
76    let url = url_string(
77        base_url,
78        p_owner,
79        p_repo,
80    )?;
81    let reqwest_url = ::reqwest::Url::parse(&url)?;
82    let mut request = ::reqwest::Request::new(::reqwest::Method::GET, reqwest_url);
83    let headers = request.headers_mut();
84    headers.append(
85        "User-Agent",
86        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
87    );
88    if let Some(value) = &h_accept {
89        headers.append(
90            "Accept",
91            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
92        );
93    }
94    Ok(request)
95}
96
97#[cfg(feature = "reqwest")]
98#[inline(always)]
99pub fn reqwest_request(
100    builder: ::reqwest::Request,
101) -> Result<::reqwest::Request, crate::v1_1_4::ApiError>
102{
103    Ok(builder)
104}
105
106#[cfg(feature = "reqwest-blocking")]
107pub fn reqwest_blocking_builder(
108    base_url: &str,
109    p_owner: &str,
110    p_repo: &str,
111    h_user_agent: &str,
112    h_accept: ::std::option::Option<&str>,
113) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError> {
114    let url = url_string(
115        base_url,
116        p_owner,
117        p_repo,
118    )?;
119    let reqwest_url = ::reqwest::Url::parse(&url)?;
120    let mut request = ::reqwest::blocking::Request::new(::reqwest::Method::GET, reqwest_url);
121    let headers = request.headers_mut();
122    headers.append(
123        "User-Agent",
124        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
125    );
126    if let Some(value) = &h_accept {
127        headers.append(
128            "Accept",
129            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
130        );
131    }
132    Ok(request)
133}
134
135#[cfg(feature = "reqwest-blocking")]
136#[inline(always)]
137pub fn reqwest_blocking_request(
138    builder: ::reqwest::blocking::Request,
139) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError>
140{
141    Ok(builder)
142}