jinxapi_github/v1_1_4/request/
search_labels.rs

1//! Search labels
2//! 
3//! Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
4//! 
5//! When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata).
6//! 
7//! For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this:
8//! 
9//! `q=bug+defect+enhancement&repository_id=64778136`
10//! 
11//! The labels that best match the query appear first in the search results.
12//! 
13//! [API method documentation](https://docs.github.com/rest/reference/search#search-labels)
14
15
16fn url_string(
17    base_url: &str,
18    q_repository_id: i64,
19    q_q: &str,
20    q_sort: ::std::option::Option<&str>,
21    q_order: ::std::option::Option<&str>,
22    q_per_page: ::std::option::Option<i64>,
23    q_page: ::std::option::Option<i64>,
24) -> Result<String, crate::v1_1_4::ApiError> {
25    let trimmed = if base_url.is_empty() {
26        "https://api.github.com"
27    } else {
28        base_url.trim_end_matches('/')
29    };
30    let mut url = String::with_capacity(trimmed.len() + 50);
31    url.push_str(trimmed);
32    url.push_str("/search/labels");
33    url.push('?');
34    ::querylizer::Form::extend(&mut url, "repository_id", &q_repository_id, false, &::querylizer::encode_query)?;
35    url.push('&');
36    ::querylizer::Form::extend(&mut url, "q", &q_q, false, &::querylizer::encode_query)?;
37    if let Some(value) = &q_sort {
38        url.push('&');
39        ::querylizer::Form::extend(&mut url, "sort", value, false, &::querylizer::encode_query)?;
40    }
41    if let Some(value) = &q_order {
42        url.push('&');
43        ::querylizer::Form::extend(&mut url, "order", value, false, &::querylizer::encode_query)?;
44    }
45    if let Some(value) = &q_per_page {
46        url.push('&');
47        ::querylizer::Form::extend(&mut url, "per_page", value, false, &::querylizer::encode_query)?;
48    }
49    if let Some(value) = &q_page {
50        url.push('&');
51        ::querylizer::Form::extend(&mut url, "page", value, false, &::querylizer::encode_query)?;
52    }
53    Ok(url)
54}
55
56#[cfg(feature = "hyper")]
57#[allow(clippy::too_many_arguments)]
58pub fn http_builder(
59    base_url: &str,
60    q_repository_id: i64,
61    q_q: &str,
62    q_sort: ::std::option::Option<&str>,
63    q_order: ::std::option::Option<&str>,
64    q_per_page: ::std::option::Option<i64>,
65    q_page: ::std::option::Option<i64>,
66    h_user_agent: &str,
67    h_accept: ::std::option::Option<&str>,
68) -> Result<::http::request::Builder, crate::v1_1_4::ApiError> {
69    let url = url_string(
70        base_url,
71        q_repository_id,
72        q_q,
73        q_sort,
74        q_order,
75        q_per_page,
76        q_page,
77    )?;
78    let mut builder = ::http::request::Request::get(url);
79    builder = builder.header(
80        "User-Agent",
81        &::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?
82    );
83    if let Some(value) = &h_accept {
84        builder = builder.header(
85            "Accept",
86            &::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?
87        );
88    }
89    Ok(builder)
90}
91
92#[cfg(feature = "hyper")]
93#[inline]
94pub fn hyper_request(
95    builder: ::http::request::Builder,
96) -> Result<::http::request::Request<::hyper::Body>, crate::v1_1_4::ApiError> {
97    Ok(builder.body(::hyper::Body::empty())?)
98}
99
100#[cfg(feature = "reqwest")]
101#[allow(clippy::too_many_arguments)]
102pub fn reqwest_builder(
103    base_url: &str,
104    q_repository_id: i64,
105    q_q: &str,
106    q_sort: ::std::option::Option<&str>,
107    q_order: ::std::option::Option<&str>,
108    q_per_page: ::std::option::Option<i64>,
109    q_page: ::std::option::Option<i64>,
110    h_user_agent: &str,
111    h_accept: ::std::option::Option<&str>,
112) -> Result<::reqwest::Request, crate::v1_1_4::ApiError> {
113    let url = url_string(
114        base_url,
115        q_repository_id,
116        q_q,
117        q_sort,
118        q_order,
119        q_per_page,
120        q_page,
121    )?;
122    let reqwest_url = ::reqwest::Url::parse(&url)?;
123    let mut request = ::reqwest::Request::new(::reqwest::Method::GET, reqwest_url);
124    let headers = request.headers_mut();
125    headers.append(
126        "User-Agent",
127        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
128    );
129    if let Some(value) = &h_accept {
130        headers.append(
131            "Accept",
132            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
133        );
134    }
135    Ok(request)
136}
137
138#[cfg(feature = "reqwest")]
139#[inline(always)]
140pub fn reqwest_request(
141    builder: ::reqwest::Request,
142) -> Result<::reqwest::Request, crate::v1_1_4::ApiError>
143{
144    Ok(builder)
145}
146
147#[cfg(feature = "reqwest-blocking")]
148#[allow(clippy::too_many_arguments)]
149pub fn reqwest_blocking_builder(
150    base_url: &str,
151    q_repository_id: i64,
152    q_q: &str,
153    q_sort: ::std::option::Option<&str>,
154    q_order: ::std::option::Option<&str>,
155    q_per_page: ::std::option::Option<i64>,
156    q_page: ::std::option::Option<i64>,
157    h_user_agent: &str,
158    h_accept: ::std::option::Option<&str>,
159) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError> {
160    let url = url_string(
161        base_url,
162        q_repository_id,
163        q_q,
164        q_sort,
165        q_order,
166        q_per_page,
167        q_page,
168    )?;
169    let reqwest_url = ::reqwest::Url::parse(&url)?;
170    let mut request = ::reqwest::blocking::Request::new(::reqwest::Method::GET, reqwest_url);
171    let headers = request.headers_mut();
172    headers.append(
173        "User-Agent",
174        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
175    );
176    if let Some(value) = &h_accept {
177        headers.append(
178            "Accept",
179            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
180        );
181    }
182    Ok(request)
183}
184
185#[cfg(feature = "reqwest-blocking")]
186#[inline(always)]
187pub fn reqwest_blocking_request(
188    builder: ::reqwest::blocking::Request,
189) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError>
190{
191    Ok(builder)
192}