Skip to content

Commit 3a74e75

Browse files
committed
refactor: include email in API requests
1 parent 0067e1b commit 3a74e75

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

rook/src/domain/new_subscriber.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11
use crate::domain::repository_url::RepositoryURL;
22
use crate::domain::subscriber_email::SubscriberEmail;
3+
use serde::Deserialize;
34

5+
#[derive(Debug, Deserialize)]
46
pub struct NewSubscriber {
57
email: SubscriberEmail,
68
repository_url: RepositoryURL,
9+
branch: Option<String>, // TODO: 브랜치 이름 제약 조건 확인하기
710
}
811

912
impl NewSubscriber {
10-
pub fn new(email: SubscriberEmail, repository_url: RepositoryURL) -> Self {
13+
pub fn new(
14+
email: SubscriberEmail,
15+
repository_url: RepositoryURL,
16+
branch: Option<String>,
17+
) -> Self {
1118
Self {
1219
email,
1320
repository_url,
21+
branch,
1422
}
1523
}
1624

@@ -21,4 +29,8 @@ impl NewSubscriber {
2129
pub fn repository_url(&self) -> &RepositoryURL {
2230
&self.repository_url
2331
}
32+
33+
pub fn branch(&self) -> Option<&String> {
34+
self.branch.as_ref()
35+
}
2436
}

rook/src/domain/subscriber_email.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
#[derive(Debug)]
1+
use serde::Deserialize;
2+
3+
#[derive(Debug, Deserialize)]
24
pub struct SubscriberEmail(String);
35

46
impl SubscriberEmail {

rook/src/main.rs

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use queensac::domain::RepositoryURL;
1+
use queensac::domain::NewSubscriber;
22
use queensac::{cancel_repository_checker, check_repository_links};
33

44
use axum::{
@@ -34,21 +34,27 @@ async fn health_check() -> &'static str {
3434

3535
#[derive(Deserialize)]
3636
struct CheckRequest {
37-
repo: RepositoryURL,
38-
branch: Option<String>,
37+
subscriber: NewSubscriber,
3938
interval_secs: Option<u64>,
4039
}
4140

4241
async fn check_handler(Json(payload): Json<CheckRequest>) -> Result<&'static str, StatusCode> {
4342
info!(
44-
"Received check request for repository: {}, branch: {:?}",
45-
payload.repo.url(),
46-
payload.branch
43+
"Received check request for repository: {}, branch: {:?}, email: {}",
44+
payload.subscriber.repository_url().url(),
45+
payload.subscriber.branch(),
46+
payload.subscriber.email().as_str()
4747
);
4848
// FIXME 일단 interval_secs 는 유저가 수정할 수 없게 할 거긴 한데, 일단 테스트할 때 편하게 요청을 받아보자.
4949
let interval = payload.interval_secs.unwrap_or(120);
5050
let interval = Duration::from_secs(interval);
51-
if let Err(e) = spawn_repository_checker(payload.repo.url(), payload.branch, interval).await {
51+
if let Err(e) = spawn_repository_checker(
52+
payload.subscriber.repository_url().url(),
53+
payload.subscriber.branch().cloned(),
54+
interval,
55+
)
56+
.await
57+
{
5258
error!("Failed to spawn repository checker: {}", e);
5359
return Err(StatusCode::BAD_REQUEST);
5460
}
@@ -57,12 +63,16 @@ async fn check_handler(Json(payload): Json<CheckRequest>) -> Result<&'static str
5763

5864
#[derive(Deserialize)]
5965
struct CancelRequest {
60-
repo: RepositoryURL,
61-
branch: Option<String>,
66+
subscriber: NewSubscriber,
6267
}
6368

6469
async fn cancel_handler(Json(payload): Json<CancelRequest>) -> Result<&'static str, StatusCode> {
65-
if let Err(e) = cancel_repository_checker(payload.repo.url(), payload.branch).await {
70+
if let Err(e) = cancel_repository_checker(
71+
payload.subscriber.repository_url().url(),
72+
payload.subscriber.branch().cloned(),
73+
)
74+
.await
75+
{
6676
error!("Repository checker failed: {}", e);
6777
return Err(StatusCode::BAD_REQUEST);
6878
}

0 commit comments

Comments
 (0)