Skip to content

Commit 9f6c8c5

Browse files
authored
Merge pull request #257 from CodIN-INU/fix/256-fcm-subscribe
fix: fcm 토큰 저장 로직 수정
2 parents f736ade + 3146797 commit 9f6c8c5

File tree

3 files changed

+41
-14
lines changed

3 files changed

+41
-14
lines changed

src/main/java/inu/codin/codin/infra/fcm/controller/FcmController.java renamed to src/main/java/inu/codin/codin/infra/fcm/controller/FcmControllerImpl.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,42 @@
11
package inu.codin.codin.infra.fcm.controller;
22

33
import inu.codin.codin.common.response.SingleResponse;
4+
import inu.codin.codin.infra.fcm.controller.swagger.FcmController;
45
import inu.codin.codin.infra.fcm.dto.request.FcmTokenRequest;
56
import inu.codin.codin.infra.fcm.service.FcmService;
6-
import io.swagger.v3.oas.annotations.tags.Tag;
77
import jakarta.validation.Valid;
8+
import jakarta.validation.constraints.Null;
89
import lombok.RequiredArgsConstructor;
910
import org.springframework.http.HttpStatus;
1011
import org.springframework.http.ResponseEntity;
11-
import org.springframework.web.bind.annotation.PostMapping;
12-
import org.springframework.web.bind.annotation.RequestBody;
13-
import org.springframework.web.bind.annotation.RequestMapping;
14-
import org.springframework.web.bind.annotation.RestController;
12+
import org.springframework.web.bind.annotation.*;
1513

1614
@RestController
1715
@RequestMapping("/fcm")
18-
@Tag(name = "FCM API", description = "FCM 토큰 저장 API")
1916
@RequiredArgsConstructor
20-
public class FcmController {
17+
public class FcmControllerImpl implements FcmController {
2118

2219
private final FcmService fcmService;
2320

2421
@PostMapping("/save")
25-
public ResponseEntity<?> sendFcmMessage(
22+
public ResponseEntity<SingleResponse<Null>> sendFcmMessage(
2623
@RequestBody @Valid FcmTokenRequest fcmTokenRequest
2724
) {
2825
fcmService.saveFcmToken(fcmTokenRequest);
2926
return ResponseEntity.status(HttpStatus.ACCEPTED).body(new SingleResponse<>(202, "FCM 토큰 저장 성공", null));
3027
}
3128

3229
@PostMapping("/subscribe")
33-
public ResponseEntity<?> subscribeTopic(
34-
@RequestBody String topic
30+
public ResponseEntity<SingleResponse<Null>> subscribeTopic(
31+
@RequestParam String topic
3532
) {
3633
fcmService.subscribeTopic(topic);
3734
return ResponseEntity.status(HttpStatus.ACCEPTED).body(new SingleResponse<>(202, "FCM 토픽 구독 성공", null));
3835
}
3936

4037
@PostMapping("/unsubscribe")
41-
public ResponseEntity<?> unsubscribeTopic(
42-
@RequestBody String topic
38+
public ResponseEntity<SingleResponse<Null>> unsubscribeTopic(
39+
@RequestParam String topic
4340
) {
4441
fcmService.unsubscribeTopic(topic);
4542
return ResponseEntity.status(HttpStatus.ACCEPTED).body(new SingleResponse<>(202, "FCM 토픽 구독 해제 성공", null));
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package inu.codin.codin.infra.fcm.controller.swagger;
2+
3+
import inu.codin.codin.common.response.SingleResponse;
4+
import inu.codin.codin.infra.fcm.dto.request.FcmTokenRequest;
5+
import io.swagger.v3.oas.annotations.Operation;
6+
import io.swagger.v3.oas.annotations.tags.Tag;
7+
import jakarta.validation.Valid;
8+
import jakarta.validation.constraints.Null;
9+
import org.springframework.http.ResponseEntity;
10+
import org.springframework.web.bind.annotation.RequestBody;
11+
import org.springframework.web.bind.annotation.RequestParam;
12+
13+
@Tag(name = "FCM API", description = "FCM 토큰 저장 API")
14+
public interface FcmController {
15+
16+
@Operation(summary = "FCM 토큰 저장", description = "알림 설정을 위해서는 미리 토큰 저장이 필요합니다")
17+
public ResponseEntity<SingleResponse<Null>> sendFcmMessage(
18+
@RequestBody @Valid FcmTokenRequest fcmTokenRequest
19+
);
20+
21+
@Operation(summary = "FCM 토픽 구독", description = "토픽을 구독하여 해당 토픽으로 알림이 옵니다.")
22+
public ResponseEntity<SingleResponse<Null>> subscribeTopic(
23+
@RequestParam String topic
24+
);
25+
26+
@Operation(summary = "FCM 토픽 구독 해제", description = "토픽 구독을 해제합니다.")
27+
public ResponseEntity<SingleResponse<Null>> unsubscribeTopic(
28+
@RequestParam String topic
29+
);
30+
}

src/main/java/inu/codin/codin/infra/fcm/dto/request/FcmTokenRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
@Getter
1010
public class FcmTokenRequest {
1111

12-
@Schema(description = "Fcm Token")
12+
@Schema(description = "Fcm Token", example = "FCM 토큰")
1313
@NotBlank
1414
private String fcmToken;
1515

16-
@Schema(description = "Android, IOS")
16+
@Schema(description = "Android, IOS", example = "디바이스 종류")
1717
@NotBlank
1818
private String deviceType;
1919

0 commit comments

Comments
 (0)