1+ pub mod tests;
2+ use std:: future:: Future ;
3+
4+ use crate :: {
5+ apis:: {
6+ apps_api:: {
7+ AppsSlashGetInstallationError , AppsSlashListReposAccessibleToInstallationError ,
8+ } ,
9+ configuration,
10+ issues_api:: {
11+ IssuesSlashCreateError , IssuesSlashListCommentsForRepoError ,
12+ IssuesSlashListForRepoError ,
13+ } ,
14+ users_api:: UsersSlashGetAuthenticatedError ,
15+ Error ,
16+ } ,
17+ models,
18+ } ;
19+
20+ /// This is how we do dependency injection / mocking.
21+ pub trait GithubApiTrait : ' static {
22+ fn users_slash_get_authenticated (
23+ & self ,
24+ configuration : & configuration:: Configuration ,
25+ ) -> impl Future <
26+ Output = Result <
27+ models:: UsersGetAuthenticated200Response ,
28+ Error < UsersSlashGetAuthenticatedError > ,
29+ > ,
30+ > ;
31+ fn issues_slash_create (
32+ & self ,
33+ configuration : & configuration:: Configuration ,
34+ owner : & str ,
35+ repo : & str ,
36+ issues_create_request : models:: IssuesCreateRequest ,
37+ ) -> impl std:: future:: Future < Output = Result < models:: Issue , Error < IssuesSlashCreateError > > > ;
38+ fn apps_slash_list_repos_accessible_to_installation (
39+ & self ,
40+ configuration : & configuration:: Configuration ,
41+ per_page : Option < i32 > ,
42+ page : Option < i32 > ,
43+ ) -> impl Future <
44+ Output = Result <
45+ models:: AppsListReposAccessibleToInstallation200Response ,
46+ Error < AppsSlashListReposAccessibleToInstallationError > ,
47+ > ,
48+ > ;
49+ fn issues_slash_list_comments_for_repo (
50+ & self ,
51+ configuration : & configuration:: Configuration ,
52+ owner : & str ,
53+ repo : & str ,
54+ sort : Option < & str > ,
55+ direction : Option < & str > ,
56+ since : Option < String > ,
57+ per_page : Option < i32 > ,
58+ page : Option < i32 > ,
59+ ) -> impl Future <
60+ Output = Result < Vec < models:: IssueComment > , Error < IssuesSlashListCommentsForRepoError > > ,
61+ > ;
62+ fn apps_slash_get_installation (
63+ & self ,
64+ configuration : & configuration:: Configuration ,
65+ installation_id : i32 ,
66+ ) -> impl Future < Output = Result < models:: Installation , Error < AppsSlashGetInstallationError > > > ;
67+ fn issues_slash_list_for_repo (
68+ & self ,
69+ configuration : & configuration:: Configuration ,
70+ owner : & str ,
71+ repo : & str ,
72+ milestone : Option < & str > ,
73+ state : Option < & str > ,
74+ assignee : Option < & str > ,
75+ creator : Option < & str > ,
76+ mentioned : Option < & str > ,
77+ labels : Option < & str > ,
78+ sort : Option < & str > ,
79+ direction : Option < & str > ,
80+ since : Option < String > ,
81+ per_page : Option < i32 > ,
82+ page : Option < i32 > ,
83+ ) -> impl Future < Output = Result < Vec < models:: Issue > , Error < IssuesSlashListForRepoError > > > ;
84+ fn users_slash_get_authenticated_request (
85+ & self ,
86+ configuration : & configuration:: Configuration ,
87+ ) -> reqwest_wiremock:: Builder ;
88+ }
89+
90+ pub struct GithubApi ;
91+
92+ impl GithubApiTrait for GithubApi {
93+ fn users_slash_get_authenticated (
94+ & self ,
95+ configuration : & configuration:: Configuration ,
96+ ) -> impl Future <
97+ Output = Result <
98+ models:: UsersGetAuthenticated200Response ,
99+ Error < UsersSlashGetAuthenticatedError > ,
100+ > ,
101+ > {
102+ crate :: apis:: users_api:: users_slash_get_authenticated ( configuration)
103+ }
104+
105+ fn issues_slash_create (
106+ & self ,
107+ configuration : & configuration:: Configuration ,
108+ owner : & str ,
109+ repo : & str ,
110+ issues_create_request : models:: IssuesCreateRequest ,
111+ ) -> impl std:: future:: Future < Output = Result < models:: Issue , Error < IssuesSlashCreateError > > > {
112+ crate :: apis:: issues_api:: issues_slash_create (
113+ configuration,
114+ owner,
115+ repo,
116+ issues_create_request,
117+ )
118+ }
119+
120+ fn apps_slash_list_repos_accessible_to_installation (
121+ & self ,
122+ configuration : & configuration:: Configuration ,
123+ per_page : Option < i32 > ,
124+ page : Option < i32 > ,
125+ ) -> impl Future <
126+ Output = Result <
127+ models:: AppsListReposAccessibleToInstallation200Response ,
128+ Error < AppsSlashListReposAccessibleToInstallationError > ,
129+ > ,
130+ > {
131+ crate :: apis:: apps_api:: apps_slash_list_repos_accessible_to_installation (
132+ configuration,
133+ per_page,
134+ page,
135+ )
136+ }
137+
138+ fn issues_slash_list_comments_for_repo (
139+ & self ,
140+ configuration : & configuration:: Configuration ,
141+ owner : & str ,
142+ repo : & str ,
143+ sort : Option < & str > ,
144+ direction : Option < & str > ,
145+ since : Option < String > ,
146+ per_page : Option < i32 > ,
147+ page : Option < i32 > ,
148+ ) -> impl Future <
149+ Output = Result < Vec < models:: IssueComment > , Error < IssuesSlashListCommentsForRepoError > > ,
150+ > {
151+ crate :: apis:: issues_api:: issues_slash_list_comments_for_repo (
152+ configuration,
153+ owner,
154+ repo,
155+ sort,
156+ direction,
157+ since,
158+ per_page,
159+ page,
160+ )
161+ }
162+
163+ fn apps_slash_get_installation (
164+ & self ,
165+ configuration : & configuration:: Configuration ,
166+ installation_id : i32 ,
167+ ) -> impl Future < Output = Result < models:: Installation , Error < AppsSlashGetInstallationError > > > {
168+ crate :: apis:: apps_api:: apps_slash_get_installation ( configuration, installation_id)
169+ }
170+
171+ fn issues_slash_list_for_repo (
172+ & self ,
173+ configuration : & configuration:: Configuration ,
174+ owner : & str ,
175+ repo : & str ,
176+ milestone : Option < & str > ,
177+ state : Option < & str > ,
178+ assignee : Option < & str > ,
179+ creator : Option < & str > ,
180+ mentioned : Option < & str > ,
181+ labels : Option < & str > ,
182+ sort : Option < & str > ,
183+ direction : Option < & str > ,
184+ since : Option < String > ,
185+ per_page : Option < i32 > ,
186+ page : Option < i32 > ,
187+ ) -> impl Future < Output = Result < Vec < models:: Issue > , Error < IssuesSlashListForRepoError > > > {
188+ crate :: apis:: issues_api:: issues_slash_list_for_repo (
189+ configuration,
190+ owner,
191+ repo,
192+ milestone,
193+ state,
194+ assignee,
195+ creator,
196+ mentioned,
197+ labels,
198+ sort,
199+ direction,
200+ since,
201+ per_page,
202+ page,
203+ )
204+ }
205+
206+ fn users_slash_get_authenticated_request (
207+ & self ,
208+ configuration : & configuration:: Configuration ,
209+ ) -> reqwest_wiremock:: Builder {
210+ crate :: apis:: users_api:: users_slash_get_authenticated_request ( configuration)
211+ }
212+ }
0 commit comments