1
1
use std:: path:: Path ;
2
+ use serde_derive:: Deserialize ;
2
3
use actix_web:: { post, App , HttpResponse , HttpServer , Responder ,
3
4
web, rt, middleware:: Logger } ;
4
5
use awc:: Client ;
@@ -10,17 +11,24 @@ mod cleanup;
10
11
mod config;
11
12
mod args;
12
13
14
+ #[ derive( Deserialize ) ]
15
+ struct PreviewParams {
16
+ job : String ,
17
+ }
18
+
13
19
/// Handler of the HTTP server /preview/ endpoint.
14
20
///
15
21
/// This gets the parameters from the url and adds a job to the queue
16
22
/// to be processed by the worker.
17
23
#[ post( "/preview/{github_owner}/{github_repo}/{pull_request_number}/" ) ]
18
24
async fn preview_handler ( params : web:: Path < ( String , String , u64 ) > ,
25
+ query_params : web:: Query < PreviewParams > ,
19
26
client : web:: Data < Client > ,
20
27
settings : web:: Data < config:: SettingsPerThread > ) -> impl Responder {
21
28
let github_owner = & params. 0 ;
22
29
let github_repo = & params. 1 ;
23
30
let pull_request_number = params. 2 ;
31
+ let job_name = & query_params. job ;
24
32
25
33
if !settings. github_allowed_owners . is_empty ( )
26
34
&& !settings. github_allowed_owners . contains ( github_owner) {
@@ -51,6 +59,7 @@ async fn preview_handler(params: web::Path<(String, String, u64)>,
51
59
match github:: publish_artifact ( & client,
52
60
& base_api_url,
53
61
pull_request_number,
62
+ job_name,
54
63
& target_dir,
55
64
settings. max_artifact_size ) . await {
56
65
Ok ( _) => {
0 commit comments