jinxapi_github/v1_1_4/request/
repos_get_all_topics.rs

1//! Get all repository topics
2//! 
3//! [API method documentation](https://docs.github.com/rest/reference/repos#get-all-repository-topics)
4
5
6fn url_string(
7    base_url: &str,
8    p_owner: &str,
9    p_repo: &str,
10    q_page: ::std::option::Option<i64>,
11    q_per_page: ::std::option::Option<i64>,
12) -> Result<String, crate::v1_1_4::ApiError> {
13    let trimmed = if base_url.is_empty() {
14        "https://api.github.com"
15    } else {
16        base_url.trim_end_matches('/')
17    };
18    let mut url = String::with_capacity(trimmed.len() + 33);
19    url.push_str(trimmed);
20    url.push_str("/repos/");
21    ::querylizer::Simple::extend(&mut url, &p_owner, false, &::querylizer::encode_path)?;
22    url.push('/');
23    ::querylizer::Simple::extend(&mut url, &p_repo, false, &::querylizer::encode_path)?;
24    url.push_str("/topics");
25    let mut prefix = '?';
26    if let Some(value) = &q_page {
27        url.push(::std::mem::replace(&mut prefix, '&'));
28        ::querylizer::Form::extend(&mut url, "page", value, false, &::querylizer::encode_query)?;
29    }
30    if let Some(value) = &q_per_page {
31        url.push(::std::mem::replace(&mut prefix, '&'));
32        ::querylizer::Form::extend(&mut url, "per_page", 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    q_page: ::std::option::Option<i64>,
43    q_per_page: ::std::option::Option<i64>,
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        q_page,
52        q_per_page,
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    q_page: ::std::option::Option<i64>,
82    q_per_page: ::std::option::Option<i64>,
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        q_page,
91        q_per_page,
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    q_page: ::std::option::Option<i64>,
124    q_per_page: ::std::option::Option<i64>,
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        q_page,
133        q_per_page,
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}