Skip to content

Commit 41c0ed2

Browse files
VideoCall feature updated
1 parent 00a6374 commit 41c0ed2

File tree

12 files changed

+694
-460
lines changed

12 files changed

+694
-460
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.spacehub.DTO.VideoRoom;
2+
3+
import lombok.Data;
4+
import org.spacehub.entities.VideoRoom.VideoRoom;
5+
6+
@Data
7+
public class VideoRoomDTO {
8+
9+
private int janusRoomId;
10+
private String name;
11+
private String createdBy;
12+
13+
public VideoRoomDTO(VideoRoom entity) {
14+
this.janusRoomId = entity.getJanusRoomId();
15+
this.name = entity.getName();
16+
this.createdBy = entity.getCreatedBy();
17+
}
18+
}
Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
1-
//package org.spacehub.configuration;
2-
//
3-
//import org.springframework.context.annotation.Configuration;
4-
//import org.springframework.messaging.simp.config.MessageBrokerRegistry;
5-
//import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
6-
//import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
7-
//import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
8-
//
9-
//@Configuration
10-
//@EnableWebSocketMessageBroker
11-
//public class WebSocketConfigVideo implements WebSocketMessageBrokerConfigurer {
12-
//
13-
// @Override
14-
// public void configureMessageBroker(MessageBrokerRegistry config) {
15-
// config.enableSimpleBroker("/video");
16-
// config.setApplicationDestinationPrefixes("/videoapp");
17-
// }
18-
//
19-
// @Override
20-
// public void registerStompEndpoints(StompEndpointRegistry registry) {
21-
// registry.addEndpoint("/call").setAllowedOrigins("*").withSockJS();
22-
// }
23-
//
24-
//}
1+
package org.spacehub.configuration.webSocket;
2+
3+
import org.springframework.context.annotation.Configuration;
4+
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
5+
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
6+
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
7+
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
8+
9+
@Configuration
10+
@EnableWebSocketMessageBroker
11+
public class WebSocketConfigVideo implements WebSocketMessageBrokerConfigurer {
12+
13+
@Override
14+
public void configureMessageBroker(MessageBrokerRegistry config) {
15+
config.enableSimpleBroker("/topic/video");
16+
config.setApplicationDestinationPrefixes("/app");
17+
}
18+
19+
@Override
20+
public void registerStompEndpoints(StompEndpointRegistry registry) {
21+
registry.addEndpoint("/video-ws")
22+
.setAllowedOriginPatterns("*")
23+
.withSockJS();
24+
}
25+
}

src/main/java/org/spacehub/controller/VideoCall/VideoCallController.java

Lines changed: 0 additions & 59 deletions
This file was deleted.

src/main/java/org/spacehub/controller/VideoCall/VideoRoomWebSocketController.java

Lines changed: 0 additions & 122 deletions
This file was deleted.
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package org.spacehub.controller.VideoRoom;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import org.spacehub.DTO.VideoRoom.VideoRoomDTO;
5+
import org.spacehub.entities.ChatRoom.ChatRoom;
6+
import org.spacehub.entities.VideoRoom.VideoRoom;
7+
import org.spacehub.repository.ChatRoom.ChatRoomRepository;
8+
import org.spacehub.service.Interface.IVideoRoomService;
9+
import org.spacehub.service.VideoRoom.JanusVideoService;
10+
import org.springframework.http.ResponseEntity;
11+
import org.springframework.web.bind.annotation.*;
12+
13+
import java.util.*;
14+
15+
@RestController
16+
@RequestMapping("/api/v1/video-room")
17+
@RequiredArgsConstructor
18+
public class VideoCallController {
19+
20+
private final JanusVideoService janusVideoService;
21+
private final IVideoRoomService videoRoomService;
22+
private final ChatRoomRepository chatRoomRepository;
23+
24+
@PostMapping("/create")
25+
public ResponseEntity<?> createVideoRoom(@RequestParam UUID chatRoomId, @RequestParam String roomName, @RequestParam String createdBy) {
26+
27+
ChatRoom chatRoom = chatRoomRepository.findById(chatRoomId)
28+
.orElseThrow(() -> new RuntimeException("ChatRoom not found"));
29+
30+
VideoRoom videoRoom = videoRoomService.createVideoRoom(chatRoom, roomName, createdBy);
31+
32+
return ResponseEntity.ok(Map.of(
33+
"message", "Video room created successfully",
34+
"videoRoom", new VideoRoomDTO(videoRoom)));
35+
}
36+
37+
@PostMapping("/join")
38+
public ResponseEntity<?> joinVideoRoom(@RequestParam int janusRoomId, @RequestParam String displayName) {
39+
40+
String sessionId = janusVideoService.createSession();
41+
String handleId = janusVideoService.attachVideoRoomPlugin(sessionId);
42+
janusVideoService.joinVideoRoom(sessionId, handleId, janusRoomId, displayName);
43+
44+
return ResponseEntity.ok(Map.of(
45+
"message", "Joined video room successfully",
46+
"janusRoomId", janusRoomId,
47+
"sessionId", sessionId,
48+
"handleId", handleId));
49+
}
50+
51+
@GetMapping("/list/{chatRoomId}")
52+
public ResponseEntity<?> listVideoRooms(@PathVariable UUID chatRoomId) {
53+
ChatRoom chatRoom = chatRoomRepository.findById(chatRoomId)
54+
.orElseThrow(() -> new RuntimeException("ChatRoom not found"));
55+
56+
List<VideoRoom> rooms = videoRoomService.getVideoRoomsForChatRoom(chatRoom);
57+
58+
return ResponseEntity.ok(Map.of(
59+
"count", rooms.size(),
60+
"videoRooms", rooms
61+
));
62+
}
63+
64+
@DeleteMapping("/delete")
65+
public ResponseEntity<?> deleteVideoRoom(@RequestParam UUID chatRoomId, @RequestParam String roomName, @RequestParam String requester) {
66+
67+
ChatRoom chatRoom = chatRoomRepository.findById(chatRoomId)
68+
.orElseThrow(() -> new RuntimeException("ChatRoom not found"));
69+
70+
videoRoomService.deleteVideoRoom(chatRoom, roomName, requester);
71+
72+
return ResponseEntity.ok(Map.of("message", "Video room deleted successfully"));
73+
}
74+
75+
}

0 commit comments

Comments
 (0)