From b7df7a80c1ace25ddd986939f4324a195705e210 Mon Sep 17 00:00:00 2001 From: Sara Date: Wed, 18 Aug 2021 12:03:27 +0100 Subject: [PATCH] Feature/acs 1786 impl rest api for version renditions (#663) * Version corrections * ACS-1784 Implement Rest API for renditions * ACS-1786 Impl Rest API for Version Renditions --- .../nodes/NodeVersionRenditionsRelation.java | 47 +++++++++++++++++-- .../alfresco/public-rest-context.xml | 1 + 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeVersionRenditionsRelation.java b/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeVersionRenditionsRelation.java index 18f0db060d..c777d56ef5 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeVersionRenditionsRelation.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeVersionRenditionsRelation.java @@ -2,7 +2,7 @@ * #%L * Alfresco Remote API * %% - * Copyright (C) 2005 - 2020 Alfresco Software Limited + * Copyright (C) 2005 - 2021 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -26,24 +26,34 @@ package org.alfresco.rest.api.nodes; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +import org.alfresco.repo.content.directurl.DirectAccessUrlDisabledException; +import org.alfresco.rest.api.DirectAccessUrlHelper; import org.alfresco.rest.api.Renditions; +import org.alfresco.rest.api.model.DirectAccessUrlRequest; import org.alfresco.rest.api.model.Rendition; import org.alfresco.rest.framework.BinaryProperties; +import org.alfresco.rest.framework.Operation; import org.alfresco.rest.framework.WebApiDescription; +import org.alfresco.rest.framework.WebApiParam; +import org.alfresco.rest.framework.core.ResourceParameter; +import org.alfresco.rest.framework.core.exceptions.DisabledServiceException; import org.alfresco.rest.framework.resource.RelationshipResource; import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction; import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceBinaryAction; import org.alfresco.rest.framework.resource.content.BinaryResource; import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; import org.alfresco.rest.framework.resource.parameters.Parameters; +import org.alfresco.rest.framework.webscripts.WithResponse; +import org.alfresco.service.cmr.repository.DirectAccessUrl; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.util.PropertyCheck; import org.springframework.beans.factory.InitializingBean; import org.springframework.extensions.webscripts.Status; -import java.util.List; - /** * * Node version renditions @@ -52,6 +62,7 @@ import java.util.List; * - POST /nodes/{nodeId}/versions/{versionId}/renditions * - GET /nodes/{nodeId}/versions/{versionId}/renditions/{renditionId} * - GET /nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/content + * - POST /nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/requestVersionDirectAccessUrl * * @author janv */ @@ -63,12 +74,18 @@ public class NodeVersionRenditionsRelation implements RelationshipResourceAction InitializingBean { private Renditions renditions; + private DirectAccessUrlHelper directAccessUrlHelper; public void setRenditions(Renditions renditions) { this.renditions = renditions; } + public void setDirectAccessUrlHelper(DirectAccessUrlHelper directAccessUrlHelper) + { + this.directAccessUrlHelper = directAccessUrlHelper; + } + @Override public void afterPropertiesSet() throws Exception { @@ -115,4 +132,28 @@ public class NodeVersionRenditionsRelation implements RelationshipResourceAction return renditions.getContent(nodeRef, versionId, renditionId, parameters); } + @Operation ("requestVersionRenditionDirectAccessUrl") + @WebApiParam (name = "requestVersionRenditionDirectAccessUrl", title = "Request direct access url", description = "Request direct access url", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT) + @WebApiDescription(title = "Request content url", + description="Generates a direct access URL.", + successStatus = HttpServletResponse.SC_OK) + public DirectAccessUrl requestContentDirectUrl(String nodeId, String versionId, DirectAccessUrlRequest directAccessUrlRequest, Parameters parameters, WithResponse withResponse) + { + boolean attachment = directAccessUrlHelper.getAttachment(directAccessUrlRequest); + Long validFor = directAccessUrlHelper.getDefaultExpiryTimeInSec(); + NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, nodeId); + String renditionId = parameters.getRelationship2Id(); + + DirectAccessUrl directAccessUrl; + try + { + directAccessUrl = renditions.requestContentDirectUrl(nodeRef, versionId, renditionId, attachment, validFor); + } + catch (DirectAccessUrlDisabledException ex) + { + throw new DisabledServiceException(ex.getMessage()); + } + return directAccessUrl; + } + } diff --git a/remote-api/src/main/resources/alfresco/public-rest-context.xml b/remote-api/src/main/resources/alfresco/public-rest-context.xml index f0a2c8ed0d..6c75c154e8 100644 --- a/remote-api/src/main/resources/alfresco/public-rest-context.xml +++ b/remote-api/src/main/resources/alfresco/public-rest-context.xml @@ -1429,6 +1429,7 @@ +