1
1
use actix_web:: { get, post, web, HttpResponse , Responder } ;
2
2
use fplus_lib:: core:: {
3
3
CompleteGovernanceReviewInfo , CompleteNewApplicationProposalInfo , CreateApplicationInfo ,
4
- LDNApplication , RefillInfo , ValidationPullRequestData ,
4
+ LDNApplication , RefillInfo , DcReachedInfo , ValidationPullRequestData , GithubQueryParams , ApplicationQueryParams
5
5
} ;
6
6
7
7
#[ post( "/application" ) ]
@@ -17,9 +17,11 @@ pub async fn create(info: web::Json<CreateApplicationInfo>) -> impl Responder {
17
17
}
18
18
}
19
19
20
- #[ get( "/application/{id}" ) ]
21
- pub async fn single ( id : web:: Path < String > ) -> impl Responder {
22
- let app = match LDNApplication :: load ( id. into_inner ( ) ) . await {
20
+ #[ get( "/application" ) ]
21
+ pub async fn single ( query : web:: Query < ApplicationQueryParams > ) -> impl Responder {
22
+ let ApplicationQueryParams { id, owner, repo } = query. into_inner ( ) ;
23
+
24
+ let app = match LDNApplication :: load ( id, owner, repo) . await {
23
25
Ok ( app) => app,
24
26
Err ( e) => return HttpResponse :: BadRequest ( ) . body ( e. to_string ( ) ) ,
25
27
} ;
@@ -35,15 +37,17 @@ pub async fn trigger(
35
37
id : web:: Path < String > ,
36
38
info : web:: Json < CompleteGovernanceReviewInfo > ,
37
39
) -> impl Responder {
38
- let ldn_application = match LDNApplication :: load ( id. into_inner ( ) ) . await {
40
+
41
+ let CompleteGovernanceReviewInfo { actor, owner, repo } = info. into_inner ( ) ;
42
+ let ldn_application = match LDNApplication :: load ( id. into_inner ( ) , owner. clone ( ) , repo. clone ( ) ) . await {
39
43
Ok ( app) => app,
40
44
Err ( e) => {
41
45
return HttpResponse :: BadRequest ( ) . body ( e. to_string ( ) ) ;
42
46
}
43
47
} ;
44
48
dbg ! ( & ldn_application) ;
45
49
match ldn_application
46
- . complete_governance_review ( info . into_inner ( ) )
50
+ . complete_governance_review ( actor , owner , repo )
47
51
. await
48
52
{
49
53
Ok ( app) => HttpResponse :: Ok ( ) . body ( serde_json:: to_string_pretty ( & app) . unwrap ( ) ) ,
@@ -59,14 +63,20 @@ pub async fn propose(
59
63
id : web:: Path < String > ,
60
64
info : web:: Json < CompleteNewApplicationProposalInfo > ,
61
65
) -> impl Responder {
62
- let ldn_application = match LDNApplication :: load ( id. into_inner ( ) ) . await {
66
+ let CompleteNewApplicationProposalInfo {
67
+ signer,
68
+ request_id,
69
+ owner,
70
+ repo
71
+ } = info. into_inner ( ) ;
72
+ let ldn_application = match LDNApplication :: load ( id. into_inner ( ) , owner. clone ( ) , repo. clone ( ) ) . await {
63
73
Ok ( app) => app,
64
74
Err ( e) => {
65
75
return HttpResponse :: BadRequest ( ) . body ( e. to_string ( ) ) ;
66
76
}
67
77
} ;
68
78
match ldn_application
69
- . complete_new_application_proposal ( info . into_inner ( ) )
79
+ . complete_new_application_proposal ( signer , request_id , owner , repo )
70
80
. await
71
81
{
72
82
Ok ( app) => HttpResponse :: Ok ( ) . body ( serde_json:: to_string_pretty ( & app) . unwrap ( ) ) ,
@@ -81,15 +91,21 @@ pub async fn approve(
81
91
id : web:: Path < String > ,
82
92
info : web:: Json < CompleteNewApplicationProposalInfo > ,
83
93
) -> impl Responder {
84
- let ldn_application = match LDNApplication :: load ( id. into_inner ( ) ) . await {
94
+ let CompleteNewApplicationProposalInfo {
95
+ signer,
96
+ request_id,
97
+ owner,
98
+ repo
99
+ } = info. into_inner ( ) ;
100
+ let ldn_application = match LDNApplication :: load ( id. into_inner ( ) , owner. clone ( ) , repo. clone ( ) ) . await {
85
101
Ok ( app) => app,
86
102
Err ( e) => {
87
103
return HttpResponse :: BadRequest ( ) . body ( e. to_string ( ) ) ;
88
104
}
89
105
} ;
90
106
dbg ! ( & ldn_application) ;
91
107
match ldn_application
92
- . complete_new_application_approval ( info . into_inner ( ) )
108
+ . complete_new_application_approval ( signer , request_id , owner , repo )
93
109
. await
94
110
{
95
111
Ok ( app) => HttpResponse :: Ok ( ) . body ( serde_json:: to_string_pretty ( & app) . unwrap ( ) ) ,
@@ -98,17 +114,19 @@ pub async fn approve(
98
114
}
99
115
100
116
#[ get( "/application/active" ) ]
101
- pub async fn active ( ) -> impl Responder {
102
- let apps = match LDNApplication :: active ( None ) . await {
117
+ pub async fn active ( query : web:: Query < GithubQueryParams > ) -> impl Responder {
118
+ let GithubQueryParams { owner, repo } = query. into_inner ( ) ;
119
+ let apps = match LDNApplication :: active ( owner, repo, None ) . await {
103
120
Ok ( app) => app,
104
121
Err ( e) => return HttpResponse :: BadRequest ( ) . body ( e. to_string ( ) ) ,
105
122
} ;
106
123
HttpResponse :: Ok ( ) . body ( serde_json:: to_string_pretty ( & apps) . unwrap ( ) )
107
124
}
108
125
109
126
#[ get( "/application/merged" ) ]
110
- pub async fn merged ( ) -> actix_web:: Result < impl Responder > {
111
- match LDNApplication :: merged ( ) . await {
127
+ pub async fn merged ( query : web:: Query < GithubQueryParams > ) -> actix_web:: Result < impl Responder > {
128
+ let GithubQueryParams { owner, repo } = query. into_inner ( ) ;
129
+ match LDNApplication :: merged ( owner, repo) . await {
112
130
Ok ( apps) => Ok ( HttpResponse :: Ok ( ) . body ( serde_json:: to_string_pretty ( & apps) . unwrap ( ) ) ) ,
113
131
Err ( e) => {
114
132
return Ok ( HttpResponse :: InternalServerError ( ) . body ( e. to_string ( ) ) ) ;
@@ -125,8 +143,9 @@ pub async fn refill(data: web::Json<RefillInfo>) -> actix_web::Result<impl Respo
125
143
}
126
144
127
145
#[ post( "/application/{id}/totaldcreached" ) ]
128
- pub async fn total_dc_reached ( id : web:: Path < String > ) -> actix_web:: Result < impl Responder > {
129
- match LDNApplication :: total_dc_reached ( id. into_inner ( ) ) . await {
146
+ pub async fn total_dc_reached ( id : web:: Path < String > , data : web:: Json < DcReachedInfo > ) -> actix_web:: Result < impl Responder > {
147
+ let DcReachedInfo { owner, repo} = data. into_inner ( ) ;
148
+ match LDNApplication :: total_dc_reached ( id. into_inner ( ) , owner, repo) . await {
130
149
Ok ( applications) => Ok ( HttpResponse :: Ok ( ) . json ( applications) ) ,
131
150
Err ( e) => Ok ( HttpResponse :: BadRequest ( ) . body ( e. to_string ( ) ) ) ,
132
151
}
@@ -136,11 +155,11 @@ pub async fn total_dc_reached(id: web::Path<String>) -> actix_web::Result<impl R
136
155
pub async fn validate_application_flow (
137
156
info : web:: Json < ValidationPullRequestData > ,
138
157
) -> impl Responder {
139
- let pr_number = info. pr_number . trim_matches ( '"' ) . parse :: < u64 > ( ) ;
140
-
158
+ let ValidationPullRequestData { pr_number, user_handle , owner , repo } = info. into_inner ( ) ;
159
+ let pr_number = pr_number . trim_matches ( '"' ) . parse :: < u64 > ( ) ;
141
160
match pr_number {
142
161
Ok ( pr_number) => {
143
- match LDNApplication :: validate_flow ( pr_number, & info . user_handle ) . await {
162
+ match LDNApplication :: validate_flow ( pr_number, & user_handle, owner , repo ) . await {
144
163
Ok ( result) => HttpResponse :: Ok ( ) . json ( result) ,
145
164
Err ( e) => HttpResponse :: InternalServerError ( ) . json ( e. to_string ( ) ) ,
146
165
}
@@ -153,11 +172,12 @@ pub async fn validate_application_flow(
153
172
pub async fn validate_application_trigger (
154
173
info : web:: Json < ValidationPullRequestData > ,
155
174
) -> impl Responder {
156
- let pr_number = info. pr_number . trim_matches ( '"' ) . parse :: < u64 > ( ) ;
175
+ let ValidationPullRequestData { pr_number, user_handle, owner, repo } = info. into_inner ( ) ;
176
+ let pr_number = pr_number. trim_matches ( '"' ) . parse :: < u64 > ( ) ;
157
177
158
178
match pr_number {
159
179
Ok ( pr_number) => {
160
- match LDNApplication :: validate_trigger ( pr_number, & info . user_handle ) . await {
180
+ match LDNApplication :: validate_trigger ( pr_number, & user_handle, owner , repo ) . await {
161
181
Ok ( result) => HttpResponse :: Ok ( ) . json ( result) ,
162
182
Err ( e) => HttpResponse :: InternalServerError ( ) . json ( e. to_string ( ) ) ,
163
183
}
@@ -170,10 +190,11 @@ pub async fn validate_application_trigger(
170
190
pub async fn validate_application_proposal (
171
191
info : web:: Json < ValidationPullRequestData > ,
172
192
) -> impl Responder {
173
- let pr_number = info. pr_number . trim_matches ( '"' ) . parse :: < u64 > ( ) ;
193
+ let ValidationPullRequestData { pr_number, user_handle : _, owner, repo } = info. into_inner ( ) ;
194
+ let pr_number = pr_number. trim_matches ( '"' ) . parse :: < u64 > ( ) ;
174
195
175
196
match pr_number {
176
- Ok ( pr_number) => match LDNApplication :: validate_proposal ( pr_number) . await {
197
+ Ok ( pr_number) => match LDNApplication :: validate_proposal ( pr_number, owner , repo ) . await {
177
198
Ok ( result) => HttpResponse :: Ok ( ) . json ( result) ,
178
199
Err ( e) => HttpResponse :: InternalServerError ( ) . json ( e. to_string ( ) ) ,
179
200
} ,
@@ -185,10 +206,11 @@ pub async fn validate_application_proposal(
185
206
pub async fn validate_application_approval (
186
207
info : web:: Json < ValidationPullRequestData > ,
187
208
) -> impl Responder {
188
- let pr_number = info. pr_number . trim_matches ( '"' ) . parse :: < u64 > ( ) ;
209
+ let ValidationPullRequestData { pr_number, user_handle : _, owner, repo } = info. into_inner ( ) ;
210
+ let pr_number = pr_number. trim_matches ( '"' ) . parse :: < u64 > ( ) ;
189
211
190
212
match pr_number {
191
- Ok ( pr_number) => match LDNApplication :: validate_approval ( pr_number) . await {
213
+ Ok ( pr_number) => match LDNApplication :: validate_approval ( pr_number, owner , repo ) . await {
192
214
Ok ( result) => HttpResponse :: Ok ( ) . json ( result) ,
193
215
Err ( e) => HttpResponse :: InternalServerError ( ) . json ( e. to_string ( ) ) ,
194
216
} ,
0 commit comments