1 package org.oransc.ran.nssmf.simulator.controller;
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;
18 import java.util.HashMap;
22 @RequestMapping("/3GPPManagement/FileDataReportingMnS/${mns.fileDataReporting.version}")
24 @RequiredArgsConstructor
25 public class FileDataReportingMnSController {
27 private static final Logger logger = LoggerFactory.getLogger(FileDataReportingMnSController.class);
29 Map<Integer, SubscriptionRequestDTO> subscriptionMap = new HashMap<>();
30 static int subscriptionId = 0;
32 @PostMapping("/subscriptions")
33 public ResponseEntity<SubscriptionDTO> subscribe(HttpServletRequest httpRequest, @Valid @RequestBody SubscriptionRequestDTO request)
35 logger.info("Received new subscription request: {}", request);
37 subscriptionId = subscriptionId + 1;
38 logger.info("Generated subscription ID: {}", subscriptionId);
40 subscriptionMap.put(subscriptionId, request);
41 logger.info("Stored subscription in map. Total subscriptions: {}", subscriptionMap.size());
43 SubscriptionDTO subscriptionDTO = new SubscriptionDTO();
44 subscriptionDTO.setCallbackUri(request.getCallbackUri());
45 URI location = URI.create(httpRequest.getRequestURL().toString() + "/" + subscriptionId);
47 logger.info("Successfully created subscription with ID: {} and callback URI: {}",
48 subscriptionId, request.getCallbackUri());
50 return ResponseEntity.created(location).body(subscriptionDTO);