1use crate::client::{Client, decode_response, handle_empty_response};
4use crate::errors::Error;
5use crate::types::*;
6
7impl Client {
8 pub async fn create(
10 &self,
11 owner: &str,
12 repo: &str,
13 params: &CreatePullRequestParams,
14 ) -> Result<PullRequest, Error> {
15 let path = format!("/repos/{}/{}/pulls", owner, repo);
16 let resp = self.send_post(&path, Some(params)).await?;
17 decode_response(resp).await
18 }
19
20 pub async fn list_commits_pull_requests(
22 &self,
23 owner: &str,
24 repo: &str,
25 pull_number: f64,
26 opts: Option<&QueryOptions>,
27 ) -> Result<Vec<Commit>, Error> {
28 let path = format!("/repos/{}/{}/pulls/{}/commits", owner, repo, pull_number);
29 let resp = self.send_get(&path, opts).await?;
30 decode_response(resp).await
31 }
32
33 pub async fn list_files(
35 &self,
36 owner: &str,
37 repo: &str,
38 pull_number: f64,
39 opts: Option<&QueryOptions>,
40 ) -> Result<Vec<CommitFiles>, Error> {
41 let path = format!("/repos/{}/{}/pulls/{}/files", owner, repo, pull_number);
42 let resp = self.send_get(&path, opts).await?;
43 decode_response(resp).await
44 }
45
46 pub async fn is_merged(&self, owner: &str, repo: &str, pull_number: f64) -> Result<(), Error> {
48 let path = format!("/repos/{}/{}/pulls/{}/merge", owner, repo, pull_number);
49 let resp = self.send_get(&path, None).await?;
50 handle_empty_response(resp).await
51 }
52
53 pub async fn update_branch(
55 &self,
56 owner: &str,
57 repo: &str,
58 pull_number: f64,
59 params: &UpdateBranchParams,
60 ) -> Result<UpdateBranchResponse, Error> {
61 let path = format!(
62 "/repos/{}/{}/pulls/{}/update-branch",
63 owner, repo, pull_number
64 );
65 let resp = self.send_put(&path, Some(params)).await?;
66 decode_response(resp).await
67 }
68}