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 @@
+