jinxapi_github/v1_1_4/request/
git_get_tree.rs

1//! Get a tree
2//! 
3//! Returns a single tree using the SHA1 value for that tree.
4//! 
5//! If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time.
6//! 
7//! [API method documentation](https://docs.github.com/rest/reference/git#get-a-tree)
8
9
10fn url_string(
11    base_url: &str,
12    p_owner: &str,
13    p_repo: &str,
14    p_tree_sha: &str,
15    q_recursive: ::std::option::Option<&str>,
16) -> Result<String, crate::v1_1_4::ApiError> {
17    let trimmed = if base_url.is_empty() {
18        "https://api.github.com"
19    } else {
20        base_url.trim_end_matches('/')
21    };
22    let mut url = String::with_capacity(trimmed.len() + 38);
23    url.push_str(trimmed);
24    url.push_str("/repos/");
25    ::querylizer::Simple::extend(&mut url, &p_owner, false, &::querylizer::encode_path)?;
26    url.push('/');
27    ::querylizer::Simple::extend(&mut url, &p_repo, false, &::querylizer::encode_path)?;
28    url.push_str("/git/trees/");
29    ::querylizer::Simple::extend(&mut url, &p_tree_sha, false, &::querylizer::encode_path)?;
30    if let Some(value) = &q_recursive {
31        url.push('?');
32        ::querylizer::Form::extend(&mut url, "recursive", value, false, &::querylizer::encode_query)?;
33    }
34    Ok(url)
35}
36
37#[cfg(feature = "hyper")]
38pub fn http_builder(
39    base_url: &str,
40    p_owner: &str,
41    p_repo: &str,
42    p_tree_sha: &str,
43    q_recursive: ::std::option::Option<&str>,
44    h_user_agent: &str,
45    h_accept: ::std::option::Option<&str>,
46) -> Result<::http::request::Builder, crate::v1_1_4::ApiError> {
47    let url = url_string(
48        base_url,
49        p_owner,
50        p_repo,
51        p_tree_sha,
52        q_recursive,
53    )?;
54    let mut builder = ::http::request::Request::get(url);
55    builder = builder.header(
56        "User-Agent",
57        &::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?
58    );
59    if let Some(value) = &h_accept {
60        builder = builder.header(
61            "Accept",
62            &::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?
63        );
64    }
65    Ok(builder)
66}
67
68#[cfg(feature = "hyper")]
69#[inline]
70pub fn hyper_request(
71    builder: ::http::request::Builder,
72) -> Result<::http::request::Request<::hyper::Body>, crate::v1_1_4::ApiError> {
73    Ok(builder.body(::hyper::Body::empty())?)
74}
75
76#[cfg(feature = "reqwest")]
77pub fn reqwest_builder(
78    base_url: &str,
79    p_owner: &str,
80    p_repo: &str,
81    p_tree_sha: &str,
82    q_recursive: ::std::option::Option<&str>,
83    h_user_agent: &str,
84    h_accept: ::std::option::Option<&str>,
85) -> Result<::reqwest::Request, crate::v1_1_4::ApiError> {
86    let url = url_string(
87        base_url,
88        p_owner,
89        p_repo,
90        p_tree_sha,
91        q_recursive,
92    )?;
93    let reqwest_url = ::reqwest::Url::parse(&url)?;
94    let mut request = ::reqwest::Request::new(::reqwest::Method::GET, reqwest_url);
95    let headers = request.headers_mut();
96    headers.append(
97        "User-Agent",
98        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
99    );
100    if let Some(value) = &h_accept {
101        headers.append(
102            "Accept",
103            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
104        );
105    }
106    Ok(request)
107}
108
109#[cfg(feature = "reqwest")]
110#[inline(always)]
111pub fn reqwest_request(
112    builder: ::reqwest::Request,
113) -> Result<::reqwest::Request, crate::v1_1_4::ApiError>
114{
115    Ok(builder)
116}
117
118#[cfg(feature = "reqwest-blocking")]
119pub fn reqwest_blocking_builder(
120    base_url: &str,
121    p_owner: &str,
122    p_repo: &str,
123    p_tree_sha: &str,
124    q_recursive: ::std::option::Option<&str>,
125    h_user_agent: &str,
126    h_accept: ::std::option::Option<&str>,
127) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError> {
128    let url = url_string(
129        base_url,
130        p_owner,
131        p_repo,
132        p_tree_sha,
133        q_recursive,
134    )?;
135    let reqwest_url = ::reqwest::Url::parse(&url)?;
136    let mut request = ::reqwest::blocking::Request::new(::reqwest::Method::GET, reqwest_url);
137    let headers = request.headers_mut();
138    headers.append(
139        "User-Agent",
140        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
141    );
142    if let Some(value) = &h_accept {
143        headers.append(
144            "Accept",
145            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
146        );
147    }
148    Ok(request)
149}
150
151#[cfg(feature = "reqwest-blocking")]
152#[inline(always)]
153pub fn reqwest_blocking_request(
154    builder: ::reqwest::blocking::Request,
155) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError>
156{
157    Ok(builder)
158}