jinxapi_github/v1_1_4/request/
actions_get_workflow_usage.rs

1//! Get workflow usage
2//! 
3//! Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
4//! 
5//! You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
6//! 
7//! [API method documentation](https://docs.github.com/rest/reference/actions#get-workflow-usage)
8
9
10fn url_string(
11    base_url: &str,
12    p_owner: &str,
13    p_repo: &str,
14    p_workflow_id: &::serde_json::value::Value,
15) -> Result<String, crate::v1_1_4::ApiError> {
16    let trimmed = if base_url.is_empty() {
17        "https://api.github.com"
18    } else {
19        base_url.trim_end_matches('/')
20    };
21    let mut url = String::with_capacity(trimmed.len() + 53);
22    url.push_str(trimmed);
23    url.push_str("/repos/");
24    ::querylizer::Simple::extend(&mut url, &p_owner, false, &::querylizer::encode_path)?;
25    url.push('/');
26    ::querylizer::Simple::extend(&mut url, &p_repo, false, &::querylizer::encode_path)?;
27    url.push_str("/actions/workflows/");
28    ::querylizer::Simple::extend(&mut url, p_workflow_id, false, &::querylizer::encode_path)?;
29    url.push_str("/timing");
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    p_workflow_id: &::serde_json::value::Value,
39    h_user_agent: &str,
40    h_accept: ::std::option::Option<&str>,
41) -> Result<::http::request::Builder, crate::v1_1_4::ApiError> {
42    let url = url_string(
43        base_url,
44        p_owner,
45        p_repo,
46        p_workflow_id,
47    )?;
48    let mut builder = ::http::request::Request::get(url);
49    builder = builder.header(
50        "User-Agent",
51        &::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?
52    );
53    if let Some(value) = &h_accept {
54        builder = builder.header(
55            "Accept",
56            &::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?
57        );
58    }
59    Ok(builder)
60}
61
62#[cfg(feature = "hyper")]
63#[inline]
64pub fn hyper_request(
65    builder: ::http::request::Builder,
66) -> Result<::http::request::Request<::hyper::Body>, crate::v1_1_4::ApiError> {
67    Ok(builder.body(::hyper::Body::empty())?)
68}
69
70#[cfg(feature = "reqwest")]
71pub fn reqwest_builder(
72    base_url: &str,
73    p_owner: &str,
74    p_repo: &str,
75    p_workflow_id: &::serde_json::value::Value,
76    h_user_agent: &str,
77    h_accept: ::std::option::Option<&str>,
78) -> Result<::reqwest::Request, crate::v1_1_4::ApiError> {
79    let url = url_string(
80        base_url,
81        p_owner,
82        p_repo,
83        p_workflow_id,
84    )?;
85    let reqwest_url = ::reqwest::Url::parse(&url)?;
86    let mut request = ::reqwest::Request::new(::reqwest::Method::GET, reqwest_url);
87    let headers = request.headers_mut();
88    headers.append(
89        "User-Agent",
90        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
91    );
92    if let Some(value) = &h_accept {
93        headers.append(
94            "Accept",
95            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
96        );
97    }
98    Ok(request)
99}
100
101#[cfg(feature = "reqwest")]
102#[inline(always)]
103pub fn reqwest_request(
104    builder: ::reqwest::Request,
105) -> Result<::reqwest::Request, crate::v1_1_4::ApiError>
106{
107    Ok(builder)
108}
109
110#[cfg(feature = "reqwest-blocking")]
111pub fn reqwest_blocking_builder(
112    base_url: &str,
113    p_owner: &str,
114    p_repo: &str,
115    p_workflow_id: &::serde_json::value::Value,
116    h_user_agent: &str,
117    h_accept: ::std::option::Option<&str>,
118) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError> {
119    let url = url_string(
120        base_url,
121        p_owner,
122        p_repo,
123        p_workflow_id,
124    )?;
125    let reqwest_url = ::reqwest::Url::parse(&url)?;
126    let mut request = ::reqwest::blocking::Request::new(::reqwest::Method::GET, reqwest_url);
127    let headers = request.headers_mut();
128    headers.append(
129        "User-Agent",
130        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
131    );
132    if let Some(value) = &h_accept {
133        headers.append(
134            "Accept",
135            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
136        );
137    }
138    Ok(request)
139}
140
141#[cfg(feature = "reqwest-blocking")]
142#[inline(always)]
143pub fn reqwest_blocking_request(
144    builder: ::reqwest::blocking::Request,
145) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError>
146{
147    Ok(builder)
148}