Skip to content

Commit 7fec6dd

Browse files
authored
Merge branch 'develop' into URECA-60/Fix/fixsummary
2 parents 525df8f + 362df10 commit 7fec6dd

48 files changed

Lines changed: 1712 additions & 212 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.gitignore‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ src/main/resources/gcp/
4747
# GCP
4848
gcp/*.json
4949
src/main/resources/gcp/*.json
50+
!**/src/main/resources/gcp/unity-stt.json
51+
src/main/resources/gcp/
52+
!**/src/main/resources/gcp/unity-stt.sample.json
53+
!**/src/main/resources/gcp/.gitkeep
5054

5155
# Spring secrets
5256
application-local.yml

‎build.gradle‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ dependencies {
4444
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.13.0'
4545

4646
implementation 'ws.schild:jave-all-deps:3.3.1'
47+
implementation 'commons-codec:commons-codec:1.15' // Base64 클래스 포함
48+
implementation 'org.springframework.boot:spring-boot-starter-webflux'
4749
}
4850

4951
tasks.named('test') {

‎src/main/java/com/ureca/unity/domain/auth/dto/MeResponse.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import lombok.AllArgsConstructor;
44
import lombok.Getter;
55

6+
import java.time.Instant;
7+
68
@Getter
79
@AllArgsConstructor
810
public class MeResponse {
@@ -11,4 +13,7 @@ public class MeResponse {
1113
private final String name;
1214
private final String role;
1315
private final String provider;
16+
17+
private final boolean termsAgreed;
18+
private final Instant termsAgreedAt;
1419
}

‎src/main/java/com/ureca/unity/domain/auth/dto/OAuthLoginResponse.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ public class OAuthLoginResponse {
1111

1212
private final TokenResponse token;
1313
private final boolean requiresOnboarding;
14+
private final boolean termsAgreed;
1415
}

‎src/main/java/com/ureca/unity/domain/auth/dto/TokenResponse.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@
99
@AllArgsConstructor
1010
public class TokenResponse {
1111
private final String accessToken;
12+
private final long userId;
1213
private final long accessTokenExpiresIn;
1314
}

‎src/main/java/com/ureca/unity/domain/auth/service/AuthSessionServiceImpl.java‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ public MeResponse getMe(HttpServletRequest request) {
6161
user.getEmail(),
6262
user.getName(),
6363
user.getRole(),
64-
user.getProvider()
64+
user.getProvider(),
65+
user.getTermsAgreedAt() != null,
66+
user.getTermsAgreedAt()
6567
);
6668
}
6769

‎src/main/java/com/ureca/unity/domain/auth/service/OAuthServiceImpl.java‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ private OAuthLoginResult createLoginResult(
8080
OAuthTokenInfo tokenInfo
8181
) {
8282
try {
83+
User user = userMapper.findById(userId)
84+
.orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND));
85+
86+
boolean termsAgreed = user.getTermsAgreedAt() != null;
87+
8388
oAuthTokenService.upsert(
8489
OAuthToken.builder()
8590
.userId(userId)
@@ -106,6 +111,7 @@ private OAuthLoginResult createLoginResult(
106111
OAuthLoginResponse.builder()
107112
.token(accessToken)
108113
.requiresOnboarding(requiresOnboarding)
114+
.termsAgreed(termsAgreed)
109115
.build(),
110116
refreshToken
111117
);
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.ureca.unity.domain.call.controller;
2+
3+
import com.ureca.unity.domain.call.dto.response.AgoraTokenResponse;
4+
import com.ureca.unity.domain.call.service.CallService;
5+
import com.ureca.unity.global.exception.CustomException;
6+
import com.ureca.unity.global.exception.ErrorCode;
7+
import lombok.RequiredArgsConstructor;
8+
import lombok.extern.slf4j.Slf4j;
9+
import org.springframework.http.ResponseEntity;
10+
import org.springframework.web.bind.annotation.GetMapping;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
import org.springframework.web.bind.annotation.RequestParam;
13+
import org.springframework.web.bind.annotation.RestController;
14+
15+
@RestController
16+
@RequestMapping("/api/agora")
17+
@RequiredArgsConstructor
18+
@Slf4j
19+
public class CallController {
20+
21+
private final CallService callService;
22+
23+
@GetMapping("/token")
24+
public ResponseEntity<AgoraTokenResponse> getRtcToken(
25+
@RequestParam String channel,
26+
@RequestParam(defaultValue = "0") int uid) {
27+
log.debug("토큰 요청: {}, 채널: {}",uid,channel);
28+
AgoraTokenResponse value=callService.makeToken(channel,uid);
29+
return ResponseEntity.ok(value);
30+
}
31+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.ureca.unity.domain.call.controller;
2+
3+
import com.ureca.unity.domain.call.dto.request.RecordingRequest;
4+
import com.ureca.unity.domain.call.dto.request.RecordingStopRequest;
5+
import com.ureca.unity.domain.call.dto.response.RecordingResponse;
6+
import com.ureca.unity.domain.call.service.RecordingServiceImpl;
7+
import com.ureca.unity.global.exception.CustomException;
8+
import com.ureca.unity.global.exception.ErrorCode;
9+
import lombok.RequiredArgsConstructor;
10+
import org.springframework.http.ResponseEntity;
11+
import org.springframework.web.ErrorResponse;
12+
import org.springframework.web.bind.annotation.*;
13+
14+
@RestController
15+
@RequestMapping("/api/recording")
16+
@RequiredArgsConstructor
17+
public class RecordingController {
18+
19+
private final RecordingServiceImpl recordingService;
20+
21+
@PostMapping("/start")
22+
public ResponseEntity<RecordingResponse> startRecording(@RequestBody RecordingRequest request) {
23+
String resourceId = recordingService.acquire(request.channelName(), request.uid());
24+
String sid = recordingService.start(resourceId, request.channelName(), request.uid(), request.token());
25+
return ResponseEntity.ok(new RecordingResponse(resourceId, sid));
26+
}
27+
28+
@PostMapping("/stop")
29+
public ResponseEntity<String> stopRecording(@RequestBody RecordingStopRequest request) {
30+
recordingService.stop(
31+
request.resourceId(),
32+
request.sid(),
33+
request.channelName(),
34+
request.uid(),
35+
request.userId()
36+
);
37+
return ResponseEntity.ok("Recording stopped successfully");
38+
}
39+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.ureca.unity.domain.call.dto.request;
2+
3+
public record RecordingRequest(String channelName, String uid, String token){}

0 commit comments

Comments
 (0)