jinxapi_github/v1_1_4/request/
repos_check_collaborator.rs

1//! Check if a user is a repository collaborator
2//! 
3//! For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
4//! 
5//! Team members will include the members of child teams.
6//! 
7//! You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this
8//! endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this
9//! endpoint.
10//! 
11//! [API method documentation](https://docs.github.com/rest/reference/repos#check-if-a-user-is-a-repository-collaborator)
12
13
14fn url_string(
15    base_url: &str,
16    p_owner: &str,
17    p_repo: &str,
18    p_username: &str,
19) -> Result<String, crate::v1_1_4::ApiError> {
20    let trimmed = if base_url.is_empty() {
21        "https://api.github.com"
22    } else {
23        base_url.trim_end_matches('/')
24    };
25    let mut url = String::with_capacity(trimmed.len() + 42);
26    url.push_str(trimmed);
27    url.push_str("/repos/");
28    ::querylizer::Simple::extend(&mut url, &p_owner, false, &::querylizer::encode_path)?;
29    url.push('/');
30    ::querylizer::Simple::extend(&mut url, &p_repo, false, &::querylizer::encode_path)?;
31    url.push_str("/collaborators/");
32    ::querylizer::Simple::extend(&mut url, &p_username, false, &::querylizer::encode_path)?;
33    Ok(url)
34}
35
36#[cfg(feature = "hyper")]
37pub fn http_builder(
38    base_url: &str,
39    p_owner: &str,
40    p_repo: &str,
41    p_username: &str,
42    h_user_agent: &str,
43    h_accept: ::std::option::Option<&str>,
44) -> Result<::http::request::Builder, crate::v1_1_4::ApiError> {
45    let url = url_string(
46        base_url,
47        p_owner,
48        p_repo,
49        p_username,
50    )?;
51    let mut builder = ::http::request::Request::get(url);
52    builder = builder.header(
53        "User-Agent",
54        &::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?
55    );
56    if let Some(value) = &h_accept {
57        builder = builder.header(
58            "Accept",
59            &::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?
60        );
61    }
62    Ok(builder)
63}
64
65#[cfg(feature = "hyper")]
66#[inline]
67pub fn hyper_request(
68    builder: ::http::request::Builder,
69) -> Result<::http::request::Request<::hyper::Body>, crate::v1_1_4::ApiError> {
70    Ok(builder.body(::hyper::Body::empty())?)
71}
72
73#[cfg(feature = "reqwest")]
74pub fn reqwest_builder(
75    base_url: &str,
76    p_owner: &str,
77    p_repo: &str,
78    p_username: &str,
79    h_user_agent: &str,
80    h_accept: ::std::option::Option<&str>,
81) -> Result<::reqwest::Request, crate::v1_1_4::ApiError> {
82    let url = url_string(
83        base_url,
84        p_owner,
85        p_repo,
86        p_username,
87    )?;
88    let reqwest_url = ::reqwest::Url::parse(&url)?;
89    let mut request = ::reqwest::Request::new(::reqwest::Method::GET, reqwest_url);
90    let headers = request.headers_mut();
91    headers.append(
92        "User-Agent",
93        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
94    );
95    if let Some(value) = &h_accept {
96        headers.append(
97            "Accept",
98            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
99        );
100    }
101    Ok(request)
102}
103
104#[cfg(feature = "reqwest")]
105#[inline(always)]
106pub fn reqwest_request(
107    builder: ::reqwest::Request,
108) -> Result<::reqwest::Request, crate::v1_1_4::ApiError>
109{
110    Ok(builder)
111}
112
113#[cfg(feature = "reqwest-blocking")]
114pub fn reqwest_blocking_builder(
115    base_url: &str,
116    p_owner: &str,
117    p_repo: &str,
118    p_username: &str,
119    h_user_agent: &str,
120    h_accept: ::std::option::Option<&str>,
121) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError> {
122    let url = url_string(
123        base_url,
124        p_owner,
125        p_repo,
126        p_username,
127    )?;
128    let reqwest_url = ::reqwest::Url::parse(&url)?;
129    let mut request = ::reqwest::blocking::Request::new(::reqwest::Method::GET, reqwest_url);
130    let headers = request.headers_mut();
131    headers.append(
132        "User-Agent",
133        ::querylizer::Simple::to_string(&h_user_agent, false, &::querylizer::passthrough)?.try_into()?
134    );
135    if let Some(value) = &h_accept {
136        headers.append(
137            "Accept",
138            ::querylizer::Simple::to_string(value, false, &::querylizer::passthrough)?.try_into()?
139        );
140    }
141    Ok(request)
142}
143
144#[cfg(feature = "reqwest-blocking")]
145#[inline(always)]
146pub fn reqwest_blocking_request(
147    builder: ::reqwest::blocking::Request,
148) -> Result<::reqwest::blocking::Request, crate::v1_1_4::ApiError>
149{
150    Ok(builder)
151}