diff --git a/src/Tree/Controllers/TreeController.cs b/src/Tree/Controllers/TreeController.cs index 9a8074d5ea1738bbb1a6578696d7155c4b3dfbef..47f7b3878fb250d81c362b885d791ff92f03f717 100644 --- a/src/Tree/Controllers/TreeController.cs +++ b/src/Tree/Controllers/TreeController.cs @@ -22,6 +22,7 @@ using VDS.RDF.Parsing; using VDS.RDF.Writing; using Coscine.ResourceLoader; using Coscine.Configuration; +using Coscine.ResourceTypeBase; namespace Coscine.Api.Tree.Controllers { @@ -84,6 +85,7 @@ namespace Coscine.Api.Tree.Controllers [HttpGet("[controller]/{resourceId}/{*path}")] public async Task<IActionResult> GetMetadata(string resourceId, string path) { + var rawPath = path; path = $"/{path}"; if (path.Contains("%2F") || path.Contains("%2f")) { @@ -144,6 +146,8 @@ namespace Coscine.Api.Tree.Controllers Kind = x.Key[(x.Key.LastIndexOf(".") + 1)..], Provider = resource.Type.DisplayName }; + var resourceTypeOptions = _resourceModel.GetResourceTypeOptions(resource.Id); + var resourceTypeDefinition = ResourceTypeFactory.CreateResourceTypeObject(resource.Type.DisplayName, _configuration); var objectMetaInfoReturnObject = new ObjectMetaInfoReturnObject(objectMetaInfo, _blobApiLink, resource.Id.ToString()); var result = new JObject { @@ -156,7 +160,7 @@ namespace Coscine.Api.Tree.Controllers ["Provider"] = objectMetaInfoReturnObject.Provider, ["IsFolder"] = objectMetaInfoReturnObject.IsFolder, ["IsFile"] = objectMetaInfoReturnObject.IsFile, - ["Action"] = new JObject { + ["Action"] = new JObject { ["Delete"] = new JObject { ["Method"] = "DELETE", ["Url"] = objectMetaInfoReturnObject.DeleteLink @@ -164,12 +168,12 @@ namespace Coscine.Api.Tree.Controllers ["Download"] = new JObject { ["Method"] = "GET", - ["Url"] = objectMetaInfoReturnObject.DownloadLink + ["Url"] = resourceTypeDefinition?.GetEntryDownloadUrl(rawPath, null, resourceTypeOptions).Result.ToString() }, ["Upload"] = new JObject { ["Method"] = "PUT", - ["Url"] = objectMetaInfoReturnObject.UploadLink + ["Url"] = resourceTypeDefinition?.GetEntryStoreUrl(rawPath, null, resourceTypeOptions).Result.ToString() } } }; @@ -320,6 +324,7 @@ namespace Coscine.Api.Tree.Controllers return NoContent(); } + /// <summary> /// Checks the resource Id and the path /// </summary>