273cdd06ec1b6485b25e1224f35b84965b98ce0e
[nonrtric/plt/rappmanager.git] /
1 package org.oransc.ran.nssmf.simulator.controller;
2
3 import jakarta.servlet.http.HttpServletRequest;
4 import jakarta.validation.Valid;
5 import lombok.RequiredArgsConstructor;
6 import org.oransc.ran.nssmf.simulator.dto.SubscriptionDTO;
7 import org.oransc.ran.nssmf.simulator.dto.SubscriptionRequestDTO;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
10 import org.springframework.http.ResponseEntity;
11 import org.springframework.scheduling.annotation.EnableScheduling;
12 import org.springframework.web.bind.annotation.PostMapping;
13 import org.springframework.web.bind.annotation.RequestBody;
14 import org.springframework.web.bind.annotation.RequestMapping;
15 import org.springframework.web.bind.annotation.RestController;
16
17 import java.net.URI;
18 import java.util.HashMap;
19 import java.util.Map;
20
21 @RestController
22 @RequestMapping("/3GPPManagement/FileDataReportingMnS/${mns.fileDataReporting.version}")
23 @EnableScheduling
24 @RequiredArgsConstructor
25 public class FileDataReportingMnSController {
26
27     private static final Logger logger = LoggerFactory.getLogger(FileDataReportingMnSController.class);
28     
29     Map<Integer, SubscriptionRequestDTO> subscriptionMap = new HashMap<>();
30     static int subscriptionId = 0;
31
32     @PostMapping("/subscriptions")
33     public ResponseEntity<SubscriptionDTO> subscribe(HttpServletRequest httpRequest, @Valid @RequestBody SubscriptionRequestDTO request)
34             throws Exception {
35         logger.info("Received new subscription request: {}", request);
36         
37         subscriptionId = subscriptionId + 1;
38         logger.info("Generated subscription ID: {}", subscriptionId);
39         
40         subscriptionMap.put(subscriptionId, request);
41         logger.info("Stored subscription in map. Total subscriptions: {}", subscriptionMap.size());
42         
43         SubscriptionDTO subscriptionDTO = new SubscriptionDTO();
44         subscriptionDTO.setCallbackUri(request.getCallbackUri());
45         URI location = URI.create(httpRequest.getRequestURL().toString() + "/" + subscriptionId);
46         
47         logger.info("Successfully created subscription with ID: {} and callback URI: {}", 
48                    subscriptionId, request.getCallbackUri());
49         
50         return ResponseEntity.created(location).body(subscriptionDTO);
51     }
52 }