|
|
|
@ -52,6 +52,7 @@ namespace Squidex.Areas.Api.Controllers.Assets |
|
|
|
/// <param name="idOrSlug">The id or slug of the asset.</param>
|
|
|
|
/// <param name="more">Optional suffix that can be used to seo-optimize the link to the image Has not effect.</param>
|
|
|
|
/// <param name="version">The optional version of the asset.</param>
|
|
|
|
/// <param name="dl">Set it to 0 to prevent download.</param>
|
|
|
|
/// <param name="width">The target width of the asset, if it is an image.</param>
|
|
|
|
/// <param name="height">The target height of the asset, if it is an image.</param>
|
|
|
|
/// <param name="quality">Optional image quality, it is is an jpeg image.</param>
|
|
|
|
@ -67,6 +68,7 @@ namespace Squidex.Areas.Api.Controllers.Assets |
|
|
|
[AllowAnonymous] |
|
|
|
public async Task<IActionResult> GetAssetContentBySlug(string app, string idOrSlug, string more, |
|
|
|
[FromQuery] long version = EtagVersion.Any, |
|
|
|
[FromQuery] int dl = 1, |
|
|
|
[FromQuery] int? width = null, |
|
|
|
[FromQuery] int? height = null, |
|
|
|
[FromQuery] int? quality = null, |
|
|
|
@ -83,7 +85,7 @@ namespace Squidex.Areas.Api.Controllers.Assets |
|
|
|
entity = await assetRepository.FindAssetBySlugAsync(App.Id, idOrSlug); |
|
|
|
} |
|
|
|
|
|
|
|
return DeliverAsset(entity, version, width, height, quality, mode); |
|
|
|
return DeliverAsset(entity, version, width, height, quality, mode, dl); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -92,6 +94,7 @@ namespace Squidex.Areas.Api.Controllers.Assets |
|
|
|
/// <param name="id">The id of the asset.</param>
|
|
|
|
/// <param name="more">Optional suffix that can be used to seo-optimize the link to the image Has not effect.</param>
|
|
|
|
/// <param name="version">The optional version of the asset.</param>
|
|
|
|
/// <param name="dl">Set it to 0 to prevent download.</param>
|
|
|
|
/// <param name="width">The target width of the asset, if it is an image.</param>
|
|
|
|
/// <param name="height">The target height of the asset, if it is an image.</param>
|
|
|
|
/// <param name="quality">Optional image quality, it is is an jpeg image.</param>
|
|
|
|
@ -106,6 +109,7 @@ namespace Squidex.Areas.Api.Controllers.Assets |
|
|
|
[ApiCosts(0.5)] |
|
|
|
public async Task<IActionResult> GetAssetContent(Guid id, string more, |
|
|
|
[FromQuery] long version = EtagVersion.Any, |
|
|
|
[FromQuery] int dl = 1, |
|
|
|
[FromQuery] int? width = null, |
|
|
|
[FromQuery] int? height = null, |
|
|
|
[FromQuery] int? quality = null, |
|
|
|
@ -113,10 +117,10 @@ namespace Squidex.Areas.Api.Controllers.Assets |
|
|
|
{ |
|
|
|
var entity = await assetRepository.FindAssetAsync(id); |
|
|
|
|
|
|
|
return DeliverAsset(entity, version, width, height, quality, mode); |
|
|
|
return DeliverAsset(entity, version, width, height, quality, mode, dl); |
|
|
|
} |
|
|
|
|
|
|
|
private IActionResult DeliverAsset(IAssetEntity entity, long version, int? width, int? height, int? quality, string mode) |
|
|
|
private IActionResult DeliverAsset(IAssetEntity entity, long version, int? width, int? height, int? quality, string mode, int download = 1) |
|
|
|
{ |
|
|
|
if (entity == null || entity.FileVersion < version || width == 0 || height == 0 || quality == 0) |
|
|
|
{ |
|
|
|
@ -125,7 +129,7 @@ namespace Squidex.Areas.Api.Controllers.Assets |
|
|
|
|
|
|
|
Response.Headers[HeaderNames.ETag] = entity.FileVersion.ToString(); |
|
|
|
|
|
|
|
return new FileCallbackResult(entity.MimeType, entity.FileName, true, async bodyStream => |
|
|
|
var handler = new Func<Stream, Task>(async bodyStream => |
|
|
|
{ |
|
|
|
var assetId = entity.Id.ToString(); |
|
|
|
|
|
|
|
@ -179,6 +183,15 @@ namespace Squidex.Areas.Api.Controllers.Assets |
|
|
|
await assetStore.DownloadAsync(assetId, entity.FileVersion, null, bodyStream); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
if (download == 1) |
|
|
|
{ |
|
|
|
return new FileCallbackResult(entity.MimeType, entity.FileName, true, handler); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
return new FileCallbackResult(entity.MimeType, null, true, handler); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private static FileStream GetTempStream() |
|
|
|
|