in server/src/main/java/com/epam/aidial/core/server/controller/InvitationController.java [46:84]
public Future<?> getOrAcceptInvitation(String invitationId) {
boolean accept = Boolean.parseBoolean(context.getRequest().getParam("accept"));
if (accept) {
proxy.getVertx()
.executeBlocking(() -> {
String bucketLocation = BucketBuilder.buildInitiatorBucket(context);
String bucket = encryptionService.encrypt(bucketLocation);
ResourceDescriptor invitationResource = invitationService.getInvitationResource(invitationId);
if (invitationResource == null) {
throw new ResourceNotFoundException();
}
return lockService.underBucketLock(invitationResource.getBucketLocation(), () -> {
shareService.acceptSharedResources(bucket, bucketLocation, invitationId);
return null;
});
}, false)
.onSuccess(ignore -> context.respond(HttpStatus.OK))
.onFailure(error -> {
if (error instanceof ResourceNotFoundException) {
context.respond(HttpStatus.NOT_FOUND, "No invitation found for ID " + invitationId);
} else if (error instanceof IllegalArgumentException) {
context.respond(HttpStatus.BAD_REQUEST, error.getMessage());
} else {
context.respond(HttpStatus.INTERNAL_SERVER_ERROR, error.getMessage());
}
});
} else {
proxy.getVertx()
.executeBlocking(() -> invitationService.getInvitation(invitationId), false)
.onSuccess(invitation -> {
if (invitation == null) {
context.respond(HttpStatus.NOT_FOUND, "No invitation found for ID " + invitationId);
} else {
context.respond(HttpStatus.OK, invitation);
}
}).onFailure(error -> context.respond(HttpStatus.INTERNAL_SERVER_ERROR, error.getMessage()));
}
return Future.succeededFuture();
}