wip
Some checks failed
CI / Maven unit tests (push) Failing after 12s
CI / Build and push images (push) Has been skipped
CI / Deploy to server (push) Has been skipped

This commit is contained in:
2026-09-20 20:37:56 +01:00
parent bd3d99e801
commit 13869c577b
5 changed files with 26 additions and 11 deletions

View File

@@ -1,7 +1,9 @@
package com.ddf.vodsystem.controllers;
import com.ddf.vodsystem.controllers.dto.StreamKey;
import com.ddf.vodsystem.dto.APIResponse;
import com.ddf.vodsystem.controllers.dto.Token;
import com.ddf.vodsystem.entities.Stream;
import com.ddf.vodsystem.entities.User;
import com.ddf.vodsystem.exceptions.NotAuthenticated;
import com.ddf.vodsystem.services.UserService;
@@ -102,4 +104,12 @@ public class UserController {
new APIResponse<>(SUCCESS, "Logged out successfully", null)
);
}
@PostMapping("/me/stream-key")
public ResponseEntity<APIResponse<StreamKey>> regenerateStreamKey() {
String streamKey = userService.regenerateStreamKey();
return ResponseEntity.ok(
new APIResponse<>(SUCCESS, "Stream key successfully", new StreamKey(streamKey))
);
}
}

View File

@@ -0,0 +1,4 @@
package com.ddf.vodsystem.controllers.dto;
public record StreamKey (String streamKey) {
}

View File

@@ -78,8 +78,8 @@ public class MarkerService {
* @return the persisted {@link Marker}
* @throws NotStreaming if the user has no active stream to mark
*/
public Marker create(String message) {
Optional<Stream> stream = streamService.getActiveStream();
public Marker create(User user, String message) {
Optional<Stream> stream = streamService.getActiveStream(user);
if (stream.isEmpty()) {
throw new NotStreaming("User must be streaming to mark");

View File

@@ -90,19 +90,14 @@ public class StreamService {
}
/**
* Returns the current user's active (not-yet-ended) stream, if any.
* Returns the user's active (not-yet-ended) stream, if any.
*
* @param user the User object
* @return the active {@link Stream}, or empty if the user is not currently streaming
* @throws NotAuthenticated if no user session is present
*/
public Optional<Stream> getActiveStream() {
Optional<User> user = userService.getLoggedInUser();
if (user.isEmpty()) {
throw new NotAuthenticated("Log in to see user streams");
}
return streamRepository.findByUserAndEndDateIsNull(user.get());
public Optional<Stream> getActiveStream(User user) {
return streamRepository.findByUserAndEndDateIsNull(user);
}
/**

View File

@@ -98,6 +98,12 @@ public class UserService {
return userRepository.findByStreamKey(streamKey);
}
public String regenerateStreamKey(User user) {
user.setStreamKey(generateStreamKey());
userRepository.saveAndFlush(user);
return user.getStreamKey();
}
private User createOrUpdateUser(User user) {
Optional<User> existingUser = userRepository.findByGoogleId(user.getGoogleId());