diff --git a/src/Tree.sln b/src/Tree.sln
index 27542b14eef80691fa5ea1e0e8f6aa90d64b0129..f966299b109c78e28aac4b784cc572d9d6a3c00c 100644
--- a/src/Tree.sln
+++ b/src/Tree.sln
@@ -1,9 +1,8 @@
-
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.156
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tree", "Tree\Tree.csproj", "{AC8882D4-3F0C-4BBF-83CE-22A5B05ED3FB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tree", "Tree\Tree.csproj", "{AC8882D4-3F0C-4BBF-83CE-22A5B05ED3FB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/src/Tree/Controllers/TreeController.cs b/src/Tree/Controllers/TreeController.cs
index 3c4ee7a4a295f48a8d00aea14532b78872038e94..7ed00bef2ad53da41474b794bd8e2c99702763ec 100644
--- a/src/Tree/Controllers/TreeController.cs
+++ b/src/Tree/Controllers/TreeController.cs
@@ -11,6 +11,7 @@ using Coscine.ResourceTypeBase;
using Coscine.WaterbutlerHelper;
using Coscine.WaterbutlerHelper.ReturnObjects;
using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
@@ -83,6 +84,36 @@ namespace Coscine.Api.Tree.Controllers
/// Path to the file
/// JSON Object with the metadata if OK, otherwise status code 400 or 401 or 404
[HttpGet("[controller]/{resourceId}/{*path}")]
+ [ApiExplorerSettings(IgnoreApi = true)]
+ public async Task GetMetadataWithPath(string resourceId, string path = "")
+ {
+ return await GetMetadata(resourceId, path);
+ }
+
+ ///
+ /// This method retrieves the metadata
+ ///
+ /// Id of a resource
+ /// Path to the file
+ /// JSON Object with the metadata if OK, otherwise status code 400 or 401 or 404
+ [HttpGet("[controller]/{resourceId}/")]
+ public async Task GetMetadataWithParameter(string resourceId, [System.Web.Http.FromUri] string path = "")
+ {
+ // Strip the first slash, to reuse the previous implementation.
+ if (path.StartsWith("/"))
+ {
+ path = path[1..];
+ }
+
+ return await GetMetadata(resourceId, path);
+ }
+
+ ///
+ /// This method retrieves the metadata
+ ///
+ /// Id of a resource
+ /// Path to the file
+ /// JSON Object with the metadata if OK, otherwise status code 400 or 401 or 404
public async Task GetMetadata(string resourceId, string path = "")
{
var rawPath = path;
@@ -195,9 +226,9 @@ namespace Coscine.Api.Tree.Controllers
return Json(jObject);
}
- catch (Exception e)
+ catch (Exception)
{
- return BadRequest($"Error in communication with the resource");
+ return BadRequest("Error in communication with the resource");
}
}
@@ -230,6 +261,36 @@ namespace Coscine.Api.Tree.Controllers
/// Path to the file
/// If OK status code 204, otherwise status code 400 or 401
[HttpPut("[controller]/{resourceId}/{*path}")]
+ [ApiExplorerSettings(IgnoreApi = true)]
+ public IActionResult StoreMetadataForFileWithPath(string resourceId, string path)
+ {
+ return StoreMetadataForFile(resourceId, path);
+ }
+
+ ///
+ /// This method stores the metadata of the file
+ ///
+ /// Id of the resource
+ /// Path to the file
+ /// If OK status code 204, otherwise status code 400 or 401
+ [HttpPut("[controller]/{resourceId}/")]
+ public IActionResult StoreMetadataForFileWithParameter(string resourceId, [System.Web.Http.FromUri] string path = "")
+ {
+ // Strip the first slash, to reuse the previous implementation.
+ if (path.StartsWith("/"))
+ {
+ path = path[1..];
+ }
+
+ return StoreMetadataForFile(resourceId, path);
+ }
+
+ ///
+ /// This method stores the metadata of the file
+ ///
+ /// Id of the resource
+ /// Path to the file
+ /// If OK status code 204, otherwise status code 400 or 401
public IActionResult StoreMetadataForFile(string resourceId, string path)
{
path = $"/{path}";
diff --git a/src/Tree/Tree.csproj b/src/Tree/Tree.csproj
index b2ac70de49d2c0898caaae96a1d5efdf6e4424ee..5f3e76b68d4b6d1cae5038c6aa08efa96893964f 100644
--- a/src/Tree/Tree.csproj
+++ b/src/Tree/Tree.csproj
@@ -24,5 +24,6 @@
+