From 8b64dbac97fcbae6a92f000decd71302739e5459 Mon Sep 17 00:00:00 2001 From: dylan Date: Fri, 31 Jan 2025 10:19:55 +0100 Subject: [PATCH] Implement skeleton for patch document --- openapi.yml | 50 +++++++++++++++++++ pom.xml | 6 ++- .../SigningRequestDocumentController.java | 20 ++++++++ .../filters/JwtRequestFilter.java | 4 +- .../SigningRequestDocumentService.java | 7 +++ .../SigningRequestDocumentServiceImpl.java | 24 +++++++++ 6 files changed, 108 insertions(+), 3 deletions(-) create mode 100644 src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java create mode 100644 src/main/java/ch/dlmw/swisssignchallenge/services/SigningRequestDocumentService.java create mode 100644 src/main/java/ch/dlmw/swisssignchallenge/services/impl/SigningRequestDocumentServiceImpl.java diff --git a/openapi.yml b/openapi.yml index 11ea81a..7cbf550 100644 --- a/openapi.yml +++ b/openapi.yml @@ -39,6 +39,7 @@ paths: application/json: schema: $ref: "#/components/schemas/HelloResponse" + /signing-request/{id}: get: tags: @@ -71,6 +72,41 @@ paths: application/json: schema: $ref: "#/components/schemas/ErrorResponse" + + /signing-request-document/{id}: + patch: + tags: + - signing-request-document + summary: Change some data in a signing request document + operationId: patchSigningRequestDocument + parameters: + - name: id + in: path + required: true + description: The ID of the signing request document + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/PatchSigningRequestDocumentRequest" + responses: + 204: + description: "Signing request document was patched" + 401: + description: "Unauthorized" + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + 404: + description: "Signing request document was not found" + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + /signing-request-document/{id}/data: get: tags: @@ -180,6 +216,20 @@ components: confirmed: type: boolean + PatchSigningRequestDocumentRequest: + type: object + required: + - op + - path + - value + properties: + op: + type: string + path: + type: string + value: + type: string + ErrorResponse: type: object required: diff --git a/pom.xml b/pom.xml index 7ccbbb4..d327bfe 100644 --- a/pom.xml +++ b/pom.xml @@ -94,7 +94,11 @@ 0.11.5 runtime - + + com.github.java-json-tools + json-patch + 1.13 + org.projectlombok diff --git a/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java b/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java new file mode 100644 index 0000000..23d6725 --- /dev/null +++ b/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java @@ -0,0 +1,20 @@ +package ch.dlmw.swisssignchallenge.controllers; + +import ch.dlmw.swisssignchallenge.services.SigningRequestDocumentService; +import lombok.AllArgsConstructor; +import org.openapitools.api.SigningRequestDocumentApi; +import org.openapitools.model.PatchSigningRequestDocumentRequest; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@AllArgsConstructor +public class SigningRequestDocumentController implements SigningRequestDocumentApi { + private final SigningRequestDocumentService signingRequestDocumentService; + + @Override + public ResponseEntity patchSigningRequestDocument(String id, PatchSigningRequestDocumentRequest patchSigningRequestDocumentRequest) { + signingRequestDocumentService.patchSigningRequestDocument(id, patchSigningRequestDocumentRequest); + return ResponseEntity.noContent().build(); + } +} diff --git a/src/main/java/ch/dlmw/swisssignchallenge/filters/JwtRequestFilter.java b/src/main/java/ch/dlmw/swisssignchallenge/filters/JwtRequestFilter.java index b52edac..3f326ef 100644 --- a/src/main/java/ch/dlmw/swisssignchallenge/filters/JwtRequestFilter.java +++ b/src/main/java/ch/dlmw/swisssignchallenge/filters/JwtRequestFilter.java @@ -63,8 +63,8 @@ public class JwtRequestFilter extends OncePerRequestFilter { filterChain.doFilter(request, response); } catch (Exception e) { response.setContentType("application/json"); - response.setStatus(HttpStatus.BAD_REQUEST.value()); - response.getWriter().write(objectMapper.writeValueAsString(new ErrorResponse("Couldn't authenticate", HttpStatus.BAD_REQUEST.value()))); + response.setStatus(HttpStatus.UNAUTHORIZED.value()); + response.getWriter().write(objectMapper.writeValueAsString(new ErrorResponse("Couldn't authenticate", HttpStatus.UNAUTHORIZED.value()))); } } diff --git a/src/main/java/ch/dlmw/swisssignchallenge/services/SigningRequestDocumentService.java b/src/main/java/ch/dlmw/swisssignchallenge/services/SigningRequestDocumentService.java new file mode 100644 index 0000000..7e2a59f --- /dev/null +++ b/src/main/java/ch/dlmw/swisssignchallenge/services/SigningRequestDocumentService.java @@ -0,0 +1,7 @@ +package ch.dlmw.swisssignchallenge.services; + +import org.openapitools.model.PatchSigningRequestDocumentRequest; + +public interface SigningRequestDocumentService { + void patchSigningRequestDocument(String id, PatchSigningRequestDocumentRequest patchSigningRequestDocumentRequest); +} diff --git a/src/main/java/ch/dlmw/swisssignchallenge/services/impl/SigningRequestDocumentServiceImpl.java b/src/main/java/ch/dlmw/swisssignchallenge/services/impl/SigningRequestDocumentServiceImpl.java new file mode 100644 index 0000000..ece174c --- /dev/null +++ b/src/main/java/ch/dlmw/swisssignchallenge/services/impl/SigningRequestDocumentServiceImpl.java @@ -0,0 +1,24 @@ +package ch.dlmw.swisssignchallenge.services.impl; + +import ch.dlmw.swisssignchallenge.repositories.SigningRequestDocumentRepository; +import ch.dlmw.swisssignchallenge.services.SigningRequestDocumentService; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.AllArgsConstructor; +import org.openapitools.model.PatchSigningRequestDocumentRequest; +import org.springframework.stereotype.Service; + +import java.util.UUID; + +@Service +@AllArgsConstructor +public class SigningRequestDocumentServiceImpl implements SigningRequestDocumentService { + private final SigningRequestDocumentRepository signingRequestDocumentRepository; + private final ObjectMapper objectMapper; + + @Override + public void patchSigningRequestDocument(String id, PatchSigningRequestDocumentRequest patchSigningRequestDocumentRequest) { + var document = signingRequestDocumentRepository.findById(UUID.fromString(id)).orElseThrow(); + + System.out.println(document.isConfirmed()); + } +}