jinxapi_github/v1_1_4/request/
search_users.rs

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