jinxapi_github/v1_1_4/request/
actions_download_artifact.rs

1//! Download an artifact
2//! 
3//! Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in
4//! the response header to find the URL for the download. The `:archive_format` must be `zip`. Anyone with read access to
5//! the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope.
6//! GitHub Apps must have the `actions:read` permission to use this endpoint.
7//! 
8//! [API method documentation](https://docs.github.com/rest/reference/actions#download-an-artifact)
9
10
11fn url_string(
12    base_url: &str,
13    p_owner: &str,
14    p_repo: &str,
15    p_artifact_id: i64,
16    p_archive_format: &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() + 48);
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("/actions/artifacts/");
30    ::querylizer::Simple::extend(&mut url, &p_artifact_id, false, &::querylizer::encode_path)?;
31    url.push('/');
32    ::querylizer::Simple::extend(&mut url, &p_archive_format, false, &::querylizer::encode_path)?;
33    Ok(url)
34}
35
36#[cfg(feature = "hyper")]
37pub fn http_builder(
38    base_url: &str,
39    p_owner: &str,
40    p_repo: &str,
41    p_artifact_id: i64,
42    p_archive_format: &str,
43    h_user_agent: &str,
44    h_accept: ::std::option::Option<&str>,
45) -> Result<::http::request::Builder, crate::v1_1_4::ApiError> {
46    let url = url_string(
47        base_url,
48        p_owner,
49        p_repo,
50        p_artifact_id,
51        p_archive_format,
52    )?;
53    let mut builder = ::http::request::Request::get(url);
54    builder = builder.header(
55        "User-Agent",
56        &::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?
57    );
58    if let Some(value) = &h_accept {
59        builder = builder.header(
60            "Accept",
61            &::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?
62        );
63    }
64    Ok(builder)
65}
66
67#[cfg(feature = "hyper")]
68#[inline]
69pub fn hyper_request(
70    builder: ::http::request::Builder,
71) -> Result<::http::request::Request<::hyper::Body>, crate::v1_1_4::ApiError> {
72    Ok(builder.body(::hyper::Body::empty())?)
73}
74
75#[cfg(feature = "reqwest")]
76pub fn reqwest_builder(
77    base_url: &str,
78    p_owner: &str,
79    p_repo: &str,
80    p_artifact_id: i64,
81    p_archive_format: &str,
82    h_user_agent: &str,
83    h_accept: ::std::option::Option<&str>,
84) -> Result<::reqwest::Request, crate::v1_1_4::ApiError> {
85    let url = url_string(
86        base_url,
87        p_owner,
88        p_repo,
89        p_artifact_id,
90        p_archive_format,
91    )?;
92    let reqwest_url = ::reqwest::Url::parse(&url)?;
93    let mut request = ::reqwest::Request::new(::reqwest::Method::GET, reqwest_url);
94    let headers = request.headers_mut();
95    headers.append(
96        "User-Agent",
97        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
98    );
99    if let Some(value) = &h_accept {
100        headers.append(
101            "Accept",
102            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
103        );
104    }
105    Ok(request)
106}
107
108#[cfg(feature = "reqwest")]
109#[inline(always)]
110pub fn reqwest_request(
111    builder: ::reqwest::Request,
112) -> Result<::reqwest::Request, crate::v1_1_4::ApiError>
113{
114    Ok(builder)
115}
116
117#[cfg(feature = "reqwest-blocking")]
118pub fn reqwest_blocking_builder(
119    base_url: &str,
120    p_owner: &str,
121    p_repo: &str,
122    p_artifact_id: i64,
123    p_archive_format: &str,
124    h_user_agent: &str,
125    h_accept: ::std::option::Option<&str>,
126) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError> {
127    let url = url_string(
128        base_url,
129        p_owner,
130        p_repo,
131        p_artifact_id,
132        p_archive_format,
133    )?;
134    let reqwest_url = ::reqwest::Url::parse(&url)?;
135    let mut request = ::reqwest::blocking::Request::new(::reqwest::Method::GET, reqwest_url);
136    let headers = request.headers_mut();
137    headers.append(
138        "User-Agent",
139        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
140    );
141    if let Some(value) = &h_accept {
142        headers.append(
143            "Accept",
144            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
145        );
146    }
147    Ok(request)
148}
149
150#[cfg(feature = "reqwest-blocking")]
151#[inline(always)]
152pub fn reqwest_blocking_request(
153    builder: ::reqwest::blocking::Request,
154) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError>
155{
156    Ok(builder)
157}