Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • Fix/xxxx-activateGitlab
  • Fix/xxxx-resourceVisibility
  • Hotfix/0071-fixResourceCreate
  • Hotfix/1259-pathParameterFix
  • Hotfix/1261-blockNoMetadata
  • Hotfix/1357-ymlFile
  • Hotfix/1370-swaggerDescription
  • Hotfix/1584-fixResourceLoader
  • Hotfix/1668-versionResourceConfigDepVersion
  • Hotfix/1709-fixDownloadViaRCV2
  • Hotfix/1805-listingBreaks
  • Hotfix/1945-weirdUploadBehavior
  • Hotfix/2087-efNet6
  • Hotfix/2141-fileUploadErrors
  • Hotfix/2254-fixContentLenghtCalculation
  • Hotfix/2371-fixGitLabinRCV
  • Hotfix/2452-linkedDeletion
  • Hotfix/2459-EncodingPath
  • Hotfix/64-releaseUDE
  • Issue/1792-newMetadataStructure
  • Issue/1866-ExtendResourceTypeConfigurationTUDo
  • Issue/1877-ExtendResourceTypeConfigurationNRWFHs
  • Issue/1910-MigrationtoNET6.0
  • Issue/1912-uriMadness
  • Issue/1940ResouceKeysForNRWAndTUDO
  • Issue/1951-quotaImplementation
  • Issue/2061-activateResourceTypeRdss3nrw
  • Issue/2072-wormResourceType
  • Issue/2102-gitLabResTypeRCV
  • Issue/2158-emailServicedesk
  • Issue/2162-fixFolderResponse
  • Issue/2287-guestRole
  • Issue/2309-docs
  • Issue/2349-gitlabHttps
  • Issue/2462-removeTraces
  • Issue/2464-invalidateMeta
  • Product/1100-fdsS3
  • Product/1154-resourceTypeDefinition
  • Product/1188-LoggingExtended
  • Product/1287-dotnet5Sharepoint
  • Product/1301-cleanupblobApi
  • Product/1440-largerFiles
  • Product/1555-readOnlyResources
  • Product/1629-onboardingOtherUniversities
  • Product/903-ApiTokens
  • Product/937-docuBlobApi
  • Sprint/2020-20
  • Sprint/2020-21
  • Sprint/2020-22
  • Sprint/2021-01
  • Sprint/2021-03
  • Sprint/2021-04
  • Sprint/2021-05
  • Sprint/2021-07
  • Sprint/2021-08
  • Sprint/2021-10
  • Sprint/2021-11
  • Sprint/2021-13
  • Sprint/2021-15
  • Sprint/2021-18
  • Sprint/2021-23
  • Sprint/2022-01
  • Topic/1108-docuBlobApi
  • Topic/1123-tokenValidation
  • Topic/1159-rtdApi
  • Topic/1221-LogginExtendedNew
  • Topic/1292-FdsS3
  • Topic/1303-cleanupblobApi
  • Topic/1335-dotnet5Apis
  • Topic/1339-fixGitLabToken
  • Topic/1451-uploadUrl
  • Topic/1452-largerFiles
  • Topic/1575-CheckArchivingStatus
  • Topic/1711-extendResourceTypeConfiguration
  • dev
  • gitkeep
  • master
  • v1.1.0
  • v1.1.1
  • v1.1.2
  • v1.2.0
  • v1.3.0
  • v1.3.1
  • v2.0.0
  • v2.0.1
  • v2.1.0
  • v2.2.0
  • v2.3.0
  • v2.3.1
  • v2.3.2
  • v2.3.3
  • v2.4.0
  • v2.4.1
  • v2.4.2
  • v2.4.3
  • v2.4.4
  • v2.5.0
  • v2.5.1
  • v2.5.2
  • v2.6.0
  • v2.6.1
  • v2.6.2
  • v2.6.3
  • v2.6.4
  • v2.7.0
  • v2.7.1
  • v2.7.2
  • v2.7.3
  • v2.8.0
  • v2.8.1
  • v2.8.2
  • v3.0.0
  • v3.0.1
  • v3.0.2
  • v3.0.3
  • v3.0.4
  • v3.0.5
  • v3.0.6
  • v3.1.0
  • v3.1.1
  • v3.1.2
  • v3.2.0
  • v3.2.1
  • v3.2.2
  • v3.2.3
  • v3.3.0
  • v3.3.1
  • v3.3.2
  • v3.3.3
  • v3.3.4
130 results

Target

Select target project
  • coscine/backend/apis/blobapi
1 result
Select Git revision
  • Fix/xxxx-activateGitlab
  • Fix/xxxx-resourceVisibility
  • Hotfix/0071-fixResourceCreate
  • Hotfix/1259-pathParameterFix
  • Hotfix/1261-blockNoMetadata
  • Hotfix/1357-ymlFile
  • Hotfix/1370-swaggerDescription
  • Hotfix/1584-fixResourceLoader
  • Hotfix/1668-versionResourceConfigDepVersion
  • Hotfix/1709-fixDownloadViaRCV2
  • Hotfix/1805-listingBreaks
  • Hotfix/1945-weirdUploadBehavior
  • Hotfix/2087-efNet6
  • Hotfix/2141-fileUploadErrors
  • Hotfix/2254-fixContentLenghtCalculation
  • Hotfix/2371-fixGitLabinRCV
  • Hotfix/2452-linkedDeletion
  • Hotfix/2459-EncodingPath
  • Hotfix/64-releaseUDE
  • Issue/1792-newMetadataStructure
  • Issue/1866-ExtendResourceTypeConfigurationTUDo
  • Issue/1877-ExtendResourceTypeConfigurationNRWFHs
  • Issue/1910-MigrationtoNET6.0
  • Issue/1912-uriMadness
  • Issue/1940ResouceKeysForNRWAndTUDO
  • Issue/1951-quotaImplementation
  • Issue/2061-activateResourceTypeRdss3nrw
  • Issue/2072-wormResourceType
  • Issue/2102-gitLabResTypeRCV
  • Issue/2158-emailServicedesk
  • Issue/2162-fixFolderResponse
  • Issue/2287-guestRole
  • Issue/2309-docs
  • Issue/2349-gitlabHttps
  • Issue/2462-removeTraces
  • Issue/2464-invalidateMeta
  • Product/1100-fdsS3
  • Product/1154-resourceTypeDefinition
  • Product/1188-LoggingExtended
  • Product/1287-dotnet5Sharepoint
  • Product/1301-cleanupblobApi
  • Product/1440-largerFiles
  • Product/1555-readOnlyResources
  • Product/1629-onboardingOtherUniversities
  • Product/903-ApiTokens
  • Product/937-docuBlobApi
  • Sprint/2020-20
  • Sprint/2020-21
  • Sprint/2020-22
  • Sprint/2021-01
  • Sprint/2021-03
  • Sprint/2021-04
  • Sprint/2021-05
  • Sprint/2021-07
  • Sprint/2021-08
  • Sprint/2021-10
  • Sprint/2021-11
  • Sprint/2021-13
  • Sprint/2021-15
  • Sprint/2021-18
  • Sprint/2021-23
  • Sprint/2022-01
  • Topic/1108-docuBlobApi
  • Topic/1123-tokenValidation
  • Topic/1159-rtdApi
  • Topic/1221-LogginExtendedNew
  • Topic/1292-FdsS3
  • Topic/1303-cleanupblobApi
  • Topic/1335-dotnet5Apis
  • Topic/1339-fixGitLabToken
  • Topic/1451-uploadUrl
  • Topic/1452-largerFiles
  • Topic/1575-CheckArchivingStatus
  • Topic/1711-extendResourceTypeConfiguration
  • dev
  • gitkeep
  • master
  • v1.1.0
  • v1.1.1
  • v1.1.2
  • v1.2.0
  • v1.3.0
  • v1.3.1
  • v2.0.0
  • v2.0.1
  • v2.1.0
  • v2.2.0
  • v2.3.0
  • v2.3.1
  • v2.3.2
  • v2.3.3
  • v2.4.0
  • v2.4.1
  • v2.4.2
  • v2.4.3
  • v2.4.4
  • v2.5.0
  • v2.5.1
  • v2.5.2
  • v2.6.0
  • v2.6.1
  • v2.6.2
  • v2.6.3
  • v2.6.4
  • v2.7.0
  • v2.7.1
  • v2.7.2
  • v2.7.3
  • v2.8.0
  • v2.8.1
  • v2.8.2
  • v3.0.0
  • v3.0.1
  • v3.0.2
  • v3.0.3
  • v3.0.4
  • v3.0.5
  • v3.0.6
  • v3.1.0
  • v3.1.1
  • v3.1.2
  • v3.2.0
  • v3.2.1
  • v3.2.2
  • v3.2.3
  • v3.3.0
  • v3.3.1
  • v3.3.2
  • v3.3.3
  • v3.3.4
130 results
Show changes
Commits on Source (3)
......@@ -5,7 +5,7 @@
<AssemblyName>Coscine.Api.Blob</AssemblyName>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TargetFramework>net5.0</TargetFramework>
<Version>2.5.0</Version>
<Version>2.5.1</Version>
</PropertyGroup>
<PropertyGroup>
<Authors>RWTH Aachen University</Authors>
......@@ -22,6 +22,7 @@
<PackageReference Include="Coscine.Database" Version="2.*-*" />
<PackageReference Include="Coscine.Logging" Version="2.*-*" />
<PackageReference Include="Coscine.ResourceLoader" Version="2.*-*" />
<PackageReference Include="Coscine.ResourceTypeBase" Version="2.*-*" />
<PackageReference Include="Coscine.WaterbutlerHelper" Version="2.*-*" />
</ItemGroup>
</Project>
......@@ -27,7 +27,6 @@ namespace Coscine.Api.Blob.Controllers
/// This controller represents the actions which can be taken with a Blob object.
/// </summary>
[Authorize]
public class BlobController : Controller
{
private readonly IConfiguration _configuration;
......@@ -80,7 +79,7 @@ namespace Coscine.Api.Blob.Controllers
{
if (!Guid.TryParse(resourceId, out Guid resourceGuid))
{
return BadRequest($"{resourceId} is not a guid.");
return BadRequest($"{resourceId} is not a GUID.");
}
var user = _authenticator.GetUser();
......@@ -109,28 +108,31 @@ namespace Coscine.Api.Blob.Controllers
return BadRequest("User does not have permission to the resource.");
}
if ((resource.Type.DisplayName.ToLower() == "rds" || resource.Type.DisplayName.ToLower() == "rdss3") && resource.ResourceTypeOptionId.HasValue)
{
try
{
var resourceTypeOptions = _resourceModel.GetResourceTypeOptions(resource.Id);
var resourceTypeDefinition = ResourceTypeFactory.CreateResourceTypeObject(resource.Type.DisplayName, _configuration);
if (resourceTypeDefinition == null)
{
return BadRequest($"No provider for: \"{resource.Type.DisplayName}\".");
}
var resourceTypeInformation = resourceTypeDefinition.GetResourceTypeInformation().Result;
if (resource.ResourceTypeOptionId.HasValue && resourceTypeInformation.IsQuotaAvailable)
{
try
{
var totalFileSize = resourceTypeDefinition.GetResourceQuotaUsed(resourceId, resourceTypeOptions).Result;
return Ok($"{{ \"data\": {{ \"usedSizeByte\": {totalFileSize} }}}}");
}
catch (Exception e)
{
_coscineLogger.Log("Get Quota failed", e);
return BadRequest($"Error in communication with the resource");
return BadRequest("Error in communication with the resource");
}
}
else
{
return BadRequest("The resource type must be rds.");
return BadRequest("The resource quota must be adjustable.");
}
}
......@@ -139,7 +141,7 @@ namespace Coscine.Api.Blob.Controllers
/// </summary>
/// <param name="resourceId">Id of the resource</param>
/// <param name="path"> Path to the file </param>
/// <returns>File if file exists otherwise Statuscode 204, 400, 401 or 404 </returns>
/// <returns>File if file exists otherwise status code 204, 400, 401 or 404 </returns>
[HttpGet("[controller]/{resourceId}/{*path}")]
[DisableRequestSizeLimit]
public async Task<IActionResult> GetFile(string resourceId, string path)
......@@ -171,14 +173,14 @@ namespace Coscine.Api.Blob.Controllers
}
var infos = await resourceTypeDefinition.GetEntry(resource.Id.ToString(), path, null, resourceTypeOptions);
var response = await resourceTypeDefinition.LoadEntry(resource.Id.ToString(), path, null, resourceTypeOptions);
new FileExtensionContentTypeProvider().TryGetContentType(path.Substring(path.LastIndexOf("/")), out string contentType);
LogAnalytics("Download File", resourceId, path.Substring(1), user);
new FileExtensionContentTypeProvider().TryGetContentType(path[path.LastIndexOf("/")..], out string contentType);
LogAnalytics("Download File", resourceId, path[1..], user);
return File(response, contentType ?? "application/octet-stream");
}
catch (Exception e)
{
_coscineLogger.Log("Get File failed", e);
return BadRequest($"Error in communication with the resource");
return BadRequest("Error in communication with the resource");
}
}
......@@ -188,7 +190,7 @@ namespace Coscine.Api.Blob.Controllers
/// <param name="resourceId">Id of the resource </param>
/// <param name="path">Path to the file</param>
/// <param name="files">List of files.</param>
/// <returns>Statuscode 204 if file is uploaded otherwise Statuscode 400 or 403</returns>
/// <returns>status code 204 if file is uploaded otherwise status code 400 or 403</returns>
[DisableRequestSizeLimit]
[RequestFormLimits(MultipartBodyLengthLimit = long.MaxValue)]
[HttpPut("[controller]/{resourceId}/{*path}")]
......@@ -219,7 +221,7 @@ namespace Coscine.Api.Blob.Controllers
if (files.Count != 1)
{
return BadRequest($"Only one file can be uploaded per request.");
return BadRequest("Only one file can be uploaded per request.");
}
var id = GenerateId(resourceId, path);
......@@ -255,7 +257,7 @@ namespace Coscine.Api.Blob.Controllers
catch (Exception e)
{
_coscineLogger.Log("Upload File failed", e);
return BadRequest($"Error in communication with the resource");
return BadRequest("Error in communication with the resource");
}
}
......@@ -264,7 +266,7 @@ namespace Coscine.Api.Blob.Controllers
/// </summary>
/// <param name="resourceId">Id of the resource </param>
/// <param name="path">Path to the file</param>
/// <returns>Statuscode 204 if deletion successful otherwise Statuscode 400, 401 or 404 </returns>
/// <returns>status code 204 if deletion successful otherwise status code 400, 401 or 404 </returns>
[HttpDelete("[controller]/{resourceId}/{*path}")]
public async Task<IActionResult> DeleteFile(string resourceId, string path)
{
......@@ -306,14 +308,14 @@ namespace Coscine.Api.Blob.Controllers
catch (Exception e)
{
_coscineLogger.Log("Delete failed", e);
return BadRequest($"Error in communication with the resource");
return BadRequest("Error in communication with the resource");
}
}
/// <summary>
/// This method checks if the resource is valid
/// </summary>
/// <returns>Statuscode 204 if resource is valid otherwise Statuscode 400 or 404</returns>
/// <returns>status code 204 if resource is valid otherwise status code 400 or 404</returns>
[HttpPost("[controller]/validate")]
public async Task<IActionResult> IsResourceValid([FromBody] JToken resource)
{
......@@ -346,12 +348,12 @@ namespace Coscine.Api.Blob.Controllers
catch (Exception e)
{
_coscineLogger.Log("Resource validation failed", e);
return BadRequest($"Error in communication with the resource");
return BadRequest("Error in communication with the resource");
}
}
/// <summary>
/// Tries to establish connection with resource and validates wether the given file/folder exists
/// Tries to establish connection with resource and validates whether the given file/folder exists
/// </summary>
private IActionResult CheckResource(string resourceId, out Resource resource)
{
......@@ -359,7 +361,7 @@ namespace Coscine.Api.Blob.Controllers
if (!Guid.TryParse(resourceId, out Guid resourceGuid))
{
return BadRequest($"{resourceId} is not a guid.");
return BadRequest($"{resourceId} is not a GUID.");
}
try
......@@ -388,7 +390,7 @@ namespace Coscine.Api.Blob.Controllers
/// Checks if the path is valid
/// </summary>
/// <param name="path">path</param>
/// <returns>Statuscode 400 if the given path is not valid</returns>
/// <returns>status code 400 if the given path is not valid</returns>
public IActionResult CheckPath(string path)
{
if (string.IsNullOrWhiteSpace(path))
......@@ -415,7 +417,7 @@ namespace Coscine.Api.Blob.Controllers
/// </summary>
/// <param name="user">user</param>
/// <param name="resource">resource</param>
/// <returns>Statuscode 403 if the user has no access</returns>
/// <returns>status code 403 if the user has no access</returns>
public IActionResult CheckUser(User user, Resource resource)
{
if (user == null || !_resourceModel.HasAccess(user, resource, UserRoles.Owner, UserRoles.Member))
......
using Coscine.WaterbutlerHelper.Services;
using Coscine.ApiCommons;
using Coscine.ApiCommons;
using Coscine.WaterbutlerHelper.Services;
using Microsoft.Extensions.DependencyInjection;
using System;
......@@ -16,8 +16,9 @@ namespace Coscine.Api.Blob
public Startup()
{
}
/// <summary>
/// Configures custom service extenions
/// Configures custom service extensions
/// </summary>
/// <param name="services">services</param>
public override void ConfigureServicesExtension(IServiceCollection services)
......@@ -30,6 +31,5 @@ namespace Coscine.Api.Blob
client.Timeout = TimeSpan.FromMinutes(30);
});
}
}
}
\ No newline at end of file