jinxapi_github/v1_1_4/request/
git_get_ref.rs

1//! Get a reference
2//! 
3//! Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned.
4//! 
5//! **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
6//! 
7//! [API method documentation](https://docs.github.com/rest/reference/git#get-a-reference)
8
9
10fn url_string(
11    base_url: &str,
12    p_owner: &str,
13    p_repo: &str,
14    p_ref: &str,
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() + 36);
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("/git/ref/");
28    ::querylizer::Simple::extend(&mut url, &p_ref, false, &::querylizer::encode_path)?;
29    Ok(url)
30}
31
32#[cfg(feature = "hyper")]
33pub fn http_builder(
34    base_url: &str,
35    p_owner: &str,
36    p_repo: &str,
37    p_ref: &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        p_ref,
46    )?;
47    let mut builder = ::http::request::Request::get(url);
48    builder = builder.header(
49        "User-Agent",
50        &::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?
51    );
52    if let Some(value) = &h_accept {
53        builder = builder.header(
54            "Accept",
55            &::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?
56        );
57    }
58    Ok(builder)
59}
60
61#[cfg(feature = "hyper")]
62#[inline]
63pub fn hyper_request(
64    builder: ::http::request::Builder,
65) -> Result<::http::request::Request<::hyper::Body>, crate::v1_1_4::ApiError> {
66    Ok(builder.body(::hyper::Body::empty())?)
67}
68
69#[cfg(feature = "reqwest")]
70pub fn reqwest_builder(
71    base_url: &str,
72    p_owner: &str,
73    p_repo: &str,
74    p_ref: &str,
75    h_user_agent: &str,
76    h_accept: ::std::option::Option<&str>,
77) -> Result<::reqwest::Request, crate::v1_1_4::ApiError> {
78    let url = url_string(
79        base_url,
80        p_owner,
81        p_repo,
82        p_ref,
83    )?;
84    let reqwest_url = ::reqwest::Url::parse(&url)?;
85    let mut request = ::reqwest::Request::new(::reqwest::Method::GET, reqwest_url);
86    let headers = request.headers_mut();
87    headers.append(
88        "User-Agent",
89        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
90    );
91    if let Some(value) = &h_accept {
92        headers.append(
93            "Accept",
94            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
95        );
96    }
97    Ok(request)
98}
99
100#[cfg(feature = "reqwest")]
101#[inline(always)]
102pub fn reqwest_request(
103    builder: ::reqwest::Request,
104) -> Result<::reqwest::Request, crate::v1_1_4::ApiError>
105{
106    Ok(builder)
107}
108
109#[cfg(feature = "reqwest-blocking")]
110pub fn reqwest_blocking_builder(
111    base_url: &str,
112    p_owner: &str,
113    p_repo: &str,
114    p_ref: &str,
115    h_user_agent: &str,
116    h_accept: ::std::option::Option<&str>,
117) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError> {
118    let url = url_string(
119        base_url,
120        p_owner,
121        p_repo,
122        p_ref,
123    )?;
124    let reqwest_url = ::reqwest::Url::parse(&url)?;
125    let mut request = ::reqwest::blocking::Request::new(::reqwest::Method::GET, reqwest_url);
126    let headers = request.headers_mut();
127    headers.append(
128        "User-Agent",
129        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
130    );
131    if let Some(value) = &h_accept {
132        headers.append(
133            "Accept",
134            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
135        );
136    }
137    Ok(request)
138}
139
140#[cfg(feature = "reqwest-blocking")]
141#[inline(always)]
142pub fn reqwest_blocking_request(
143    builder: ::reqwest::blocking::Request,
144) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError>
145{
146    Ok(builder)
147}