SharingsController.java
package se.jobtechdev.personaldatagateway.api.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.context.request.NativeWebRequest;
import se.jobtechdev.personaldatagateway.api.generated.api.SharingsApi;
import se.jobtechdev.personaldatagateway.api.generated.model.Sharing;
import se.jobtechdev.personaldatagateway.api.service.SharingService;
import se.jobtechdev.personaldatagateway.api.util.LinkHeaderUtil;
import se.jobtechdev.personaldatagateway.api.util.ResponseFactory;
import java.util.UUID;
import static se.jobtechdev.personaldatagateway.api.util.ControllerUtil.throwApiExceptionOnAbsentValue;
@Controller
public class SharingsController implements SharingsApi {
private final String baseUrl;
private final NativeWebRequest request;
private final SharingService sharingService;
public SharingsController(
@Value("${pdg-api.base-url}") String baseUrl,
NativeWebRequest request,
SharingService sharingService) {
this.baseUrl = baseUrl;
this.request = request;
this.sharingService = sharingService;
}
@Override
public ResponseEntity<Sharing> getSharing(UUID sharingId) {
final var sharing =
throwApiExceptionOnAbsentValue(
sharingService.getSharingById(sharingId),
HttpStatus.NOT_FOUND,
String.format(
"Failed to handle GET sharing request - Could not find sharing with id: %s",
sharingId));
final var response = ResponseFactory.createSharing(sharing);
final var headers = LinkHeaderUtil.createHeaders(new Class<?>[]{UUID.class}, sharingId);
return ResponseEntity.status(HttpStatus.OK)
.contentType(MediaType.APPLICATION_JSON)
.headers(headers)
.body(response);
}
}