Browse Source

Docs fixed (#672)

pull/674/head
Sebastian Stehle 5 years ago
committed by GitHub
parent
commit
d8cf3b5b43
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 32
      backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs
  2. 12
      backend/src/Squidex/Areas/Api/Controllers/Assets/AssetFoldersController.cs
  3. 31
      backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs
  4. 60
      backend/src/Squidex/Areas/Api/Controllers/Assets/Models/CreateAssetDto.cs
  5. 47
      backend/src/Squidex/Areas/Api/Controllers/Assets/Models/UpsertAssetDto.cs
  6. 4
      backend/src/Squidex/Areas/Api/Controllers/Comments/CommentsController.cs
  7. 2
      backend/src/Squidex/Areas/Api/Controllers/Comments/Notifications/UserNotificationsController.cs
  8. 4
      backend/src/Squidex/Areas/Api/Controllers/Schemas/SchemaFieldsController.cs

32
backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs

@ -61,7 +61,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="idOrSlug">The id or slug of the asset.</param> /// <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="more">Optional suffix that can be used to seo-optimize the link to the image Has not effect.</param>
/// <param name="queries">The query string parameters.</param> /// <param name="request">The request parameters.</param>
/// <returns> /// <returns>
/// 200 => Asset found and content or (resized) image returned. /// 200 => Asset found and content or (resized) image returned.
/// 404 => Asset or app not found. /// 404 => Asset or app not found.
@ -72,7 +72,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
[ApiPermission] [ApiPermission]
[ApiCosts(0.5)] [ApiCosts(0.5)]
[AllowAnonymous] [AllowAnonymous]
public async Task<IActionResult> GetAssetContentBySlug(string app, string idOrSlug, [FromQuery] AssetContentQueryDto queries, string? more = null) public async Task<IActionResult> GetAssetContentBySlug(string app, string idOrSlug, AssetContentQueryDto request, string? more = null)
{ {
var requestContext = Context.Clone(b => b.WithoutAssetEnrichment()); var requestContext = Context.Clone(b => b.WithoutAssetEnrichment());
@ -83,14 +83,14 @@ namespace Squidex.Areas.Api.Controllers.Assets
asset = await assetQuery.FindBySlugAsync(requestContext, idOrSlug); asset = await assetQuery.FindBySlugAsync(requestContext, idOrSlug);
} }
return await DeliverAssetAsync(requestContext, asset, queries); return await DeliverAssetAsync(requestContext, asset, request);
} }
/// <summary> /// <summary>
/// Get the asset content. /// Get the asset content.
/// </summary> /// </summary>
/// <param name="id">The id of the asset.</param> /// <param name="id">The id of the asset.</param>
/// <param name="queries">The query string parameters.</param> /// <param name="request">The request parameters.</param>
/// <returns> /// <returns>
/// 200 => Asset found and content or (resized) image returned. /// 200 => Asset found and content or (resized) image returned.
/// 404 => Asset or app not found. /// 404 => Asset or app not found.
@ -102,18 +102,18 @@ namespace Squidex.Areas.Api.Controllers.Assets
[ApiCosts(0.5)] [ApiCosts(0.5)]
[AllowAnonymous] [AllowAnonymous]
[Obsolete("Use overload with app name")] [Obsolete("Use overload with app name")]
public async Task<IActionResult> GetAssetContent(DomainId id, [FromQuery] AssetContentQueryDto queries) public async Task<IActionResult> GetAssetContent(DomainId id, AssetContentQueryDto request)
{ {
var requestContext = Context.Clone(b => b.WithoutAssetEnrichment()); var requestContext = Context.Clone(b => b.WithoutAssetEnrichment());
var asset = await assetQuery.FindGlobalAsync(requestContext, id); var asset = await assetQuery.FindGlobalAsync(requestContext, id);
return await DeliverAssetAsync(requestContext, asset, queries); return await DeliverAssetAsync(requestContext, asset, request);
} }
private async Task<IActionResult> DeliverAssetAsync(Context context, IAssetEntity? asset, AssetContentQueryDto queries) private async Task<IActionResult> DeliverAssetAsync(Context context, IAssetEntity? asset, AssetContentQueryDto request)
{ {
queries ??= new AssetContentQueryDto(); request ??= new AssetContentQueryDto();
if (asset == null) if (asset == null)
{ {
@ -127,16 +127,16 @@ namespace Squidex.Areas.Api.Controllers.Assets
return StatusCode(403); return StatusCode(403);
} }
if (asset != null && queries.Version > EtagVersion.Any && asset.Version != queries.Version) if (asset != null && request.Version > EtagVersion.Any && asset.Version != request.Version)
{ {
if (context.App != null) if (context.App != null)
{ {
asset = await assetQuery.FindAsync(context, asset.Id, queries.Version); asset = await assetQuery.FindAsync(context, asset.Id, request.Version);
} }
else else
{ {
// Fallback for old endpoint. Does not set the surrogate key. // Fallback for old endpoint. Does not set the surrogate key.
asset = await assetLoader.GetAsync(asset.AppId.Id, asset.Id, queries.Version); asset = await assetLoader.GetAsync(asset.AppId.Id, asset.Id, request.Version);
} }
} }
@ -145,15 +145,15 @@ namespace Squidex.Areas.Api.Controllers.Assets
return NotFound(); return NotFound();
} }
var resizeOptions = queries.ToResizeOptions(asset); var resizeOptions = request.ToResizeOptions(asset);
FileCallback callback; FileCallback callback;
Response.Headers[HeaderNames.ETag] = asset.FileVersion.ToString(); Response.Headers[HeaderNames.ETag] = asset.FileVersion.ToString();
if (queries.CacheDuration > 0) if (request.CacheDuration > 0)
{ {
Response.Headers[HeaderNames.CacheControl] = $"public,max-age={queries.CacheDuration}"; Response.Headers[HeaderNames.CacheControl] = $"public,max-age={request.CacheDuration}";
} }
var contentLength = (long?)null; var contentLength = (long?)null;
@ -164,7 +164,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
{ {
var resizedAsset = $"{asset.AppId.Id}_{asset.Id}_{asset.FileVersion}_{resizeOptions}"; var resizedAsset = $"{asset.AppId.Id}_{asset.Id}_{asset.FileVersion}_{resizeOptions}";
if (queries.ForceResize) if (request.ForceResize)
{ {
await ResizeAsync(asset, bodyStream, resizedAsset, resizeOptions, true, ct); await ResizeAsync(asset, bodyStream, resizedAsset, resizeOptions, true, ct);
} }
@ -198,7 +198,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
FileDownloadName = asset.FileName, FileDownloadName = asset.FileName,
FileSize = contentLength, FileSize = contentLength,
LastModified = asset.LastModified.ToDateTimeOffset(), LastModified = asset.LastModified.ToDateTimeOffset(),
SendInline = queries.Download != 1 SendInline = request.Download != 1
}; };
} }

12
backend/src/Squidex/Areas/Api/Controllers/Assets/AssetFoldersController.cs

@ -68,7 +68,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
} }
/// <summary> /// <summary>
/// Upload a new asset. /// Create an asset folder.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="request">The asset folder object that needs to be added to the App.</param> /// <param name="request">The asset folder object that needs to be added to the App.</param>
@ -79,7 +79,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
/// </returns> /// </returns>
[HttpPost] [HttpPost]
[Route("apps/{app}/assets/folders", Order = -1)] [Route("apps/{app}/assets/folders", Order = -1)]
[ProducesResponseType(typeof(AssetDto), 201)] [ProducesResponseType(typeof(AssetFolderDto), 201)]
[AssetRequestSizeLimit] [AssetRequestSizeLimit]
[ApiPermissionOrAnonymous(Permissions.AppAssetsUpdate)] [ApiPermissionOrAnonymous(Permissions.AppAssetsUpdate)]
[ApiCosts(1)] [ApiCosts(1)]
@ -93,7 +93,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
} }
/// <summary> /// <summary>
/// Updates the asset folder. /// Update an asset folder.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="id">The id of the asset folder.</param> /// <param name="id">The id of the asset folder.</param>
@ -105,7 +105,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
/// </returns> /// </returns>
[HttpPut] [HttpPut]
[Route("apps/{app}/assets/folders/{id}/", Order = -1)] [Route("apps/{app}/assets/folders/{id}/", Order = -1)]
[ProducesResponseType(typeof(AssetDto), StatusCodes.Status200OK)] [ProducesResponseType(typeof(AssetFolderDto), StatusCodes.Status200OK)]
[AssetRequestSizeLimit] [AssetRequestSizeLimit]
[ApiPermissionOrAnonymous(Permissions.AppAssetsUpdate)] [ApiPermissionOrAnonymous(Permissions.AppAssetsUpdate)]
[ApiCosts(1)] [ApiCosts(1)]
@ -119,7 +119,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
} }
/// <summary> /// <summary>
/// Moves the asset folder. /// Move an asset folder.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="id">The id of the asset folder.</param> /// <param name="id">The id of the asset folder.</param>
@ -131,7 +131,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
/// </returns> /// </returns>
[HttpPut] [HttpPut]
[Route("apps/{app}/assets/folders/{id}/parent", Order = -1)] [Route("apps/{app}/assets/folders/{id}/parent", Order = -1)]
[ProducesResponseType(typeof(AssetDto), StatusCodes.Status200OK)] [ProducesResponseType(typeof(AssetFolderDto), StatusCodes.Status200OK)]
[AssetRequestSizeLimit] [AssetRequestSizeLimit]
[ApiPermissionOrAnonymous(Permissions.AppAssetsUpdate)] [ApiPermissionOrAnonymous(Permissions.AppAssetsUpdate)]
[ApiCosts(1)] [ApiCosts(1)]

31
backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs

@ -172,10 +172,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
/// Upload a new asset. /// Upload a new asset.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="parentId">The optional parent folder id.</param> /// <param name="request">The request parameters.</param>
/// <param name="file">The file to upload.</param>
/// <param name="id">The optional custom asset id.</param>
/// <param name="duplicate">True to duplicate the asset, event if the file has been uploaded.</param>
/// <returns> /// <returns>
/// 201 => Asset created. /// 201 => Asset created.
/// 400 => Asset request not valid. /// 400 => Asset request not valid.
@ -191,16 +188,9 @@ namespace Squidex.Areas.Api.Controllers.Assets
[AssetRequestSizeLimit] [AssetRequestSizeLimit]
[ApiPermissionOrAnonymous(Permissions.AppAssetsCreate)] [ApiPermissionOrAnonymous(Permissions.AppAssetsCreate)]
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PostAsset(string app, [FromQuery] DomainId parentId, IFormFile file, [FromQuery] DomainId? id = null, [FromQuery] bool duplicate = false) public async Task<IActionResult> PostAsset(string app, CreateAssetDto request)
{ {
var assetFile = await CheckAssetFileAsync(file); var command = request.ToCommand(await CheckAssetFileAsync(request.File));
var command = new CreateAsset { File = assetFile, ParentId = parentId, Duplicate = duplicate };
if (id != null && id.Value != default && !string.IsNullOrWhiteSpace(id.Value.ToString()))
{
command.AssetId = id.Value;
}
var response = await InvokeCommandAsync(command); var response = await InvokeCommandAsync(command);
@ -238,9 +228,8 @@ namespace Squidex.Areas.Api.Controllers.Assets
/// Upsert an asset. /// Upsert an asset.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="parentId">The optional parent folder id.</param>
/// <param name="file">The file to upload.</param>
/// <param name="id">The optional custom asset id.</param> /// <param name="id">The optional custom asset id.</param>
/// <param name="request">The request parameters.</param>
/// <returns> /// <returns>
/// 200 => Asset created or updated. /// 200 => Asset created or updated.
/// 400 => Asset request not valid. /// 400 => Asset request not valid.
@ -256,11 +245,9 @@ namespace Squidex.Areas.Api.Controllers.Assets
[AssetRequestSizeLimit] [AssetRequestSizeLimit]
[ApiPermissionOrAnonymous(Permissions.AppAssetsCreate)] [ApiPermissionOrAnonymous(Permissions.AppAssetsCreate)]
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PostUpsertAsset(string app, DomainId id, [FromQuery] DomainId? parentId, IFormFile file) public async Task<IActionResult> PostUpsertAsset(string app, DomainId id, UpsertAssetDto request)
{ {
var assetFile = await CheckAssetFileAsync(file); var command = request.ToCommand(id, await CheckAssetFileAsync(request.File));
var command = new UpsertAsset { File = assetFile, ParentId = parentId, AssetId = id };
var response = await InvokeCommandAsync(command); var response = await InvokeCommandAsync(command);
@ -289,9 +276,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PutAssetContent(string app, DomainId id, IFormFile file) public async Task<IActionResult> PutAssetContent(string app, DomainId id, IFormFile file)
{ {
var assetFile = await CheckAssetFileAsync(file); var command = new UpdateAsset { File = await CheckAssetFileAsync(file), AssetId = id };
var command = new UpdateAsset { File = assetFile, AssetId = id };
var response = await InvokeCommandAsync(command); var response = await InvokeCommandAsync(command);
@ -299,7 +284,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
} }
/// <summary> /// <summary>
/// Updates the asset. /// Update an asset.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="id">The id of the asset.</param> /// <param name="id">The id of the asset.</param>

60
backend/src/Squidex/Areas/Api/Controllers/Assets/Models/CreateAssetDto.cs

@ -0,0 +1,60 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Squidex.Assets;
using Squidex.Domain.Apps.Entities.Assets.Commands;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Assets.Models
{
public sealed class CreateAssetDto
{
/// <summary>
/// The file to upload.
/// </summary>
public IFormFile File { get; set; }
/// <summary>
/// The optional parent folder id.
/// </summary>
[FromQuery]
public DomainId ParentId { get; set; }
/// <summary>
/// The optional path to the parent folder.
/// </summary>
[FromQuery]
public string? ParentPath { get; set; }
/// <summary>
/// The optional custom asset id.
/// </summary>
[FromQuery]
public DomainId? Id { get; set; }
/// <summary>
/// True to duplicate the asset, event if the file has been uploaded.
/// </summary>
[FromQuery]
public bool Duplicate { get; set; }
public CreateAsset ToCommand(AssetFile file)
{
var command = SimpleMapper.Map(this, new CreateAsset { File = file });
if (Id != null && Id.Value != default && !string.IsNullOrWhiteSpace(Id.Value.ToString()))
{
command.AssetId = Id.Value;
}
return command;
}
}
}

47
backend/src/Squidex/Areas/Api/Controllers/Assets/Models/UpsertAssetDto.cs

@ -0,0 +1,47 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Squidex.Assets;
using Squidex.Domain.Apps.Entities.Assets.Commands;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Assets.Models
{
public sealed class UpsertAssetDto
{
/// <summary>
/// The file to upload.
/// </summary>
public IFormFile File { get; set; }
/// <summary>
/// The optional parent folder id.
/// </summary>
[FromQuery]
public DomainId ParentId { get; set; }
/// <summary>
/// The optional path to the parent folder.
/// </summary>
[FromQuery]
public string? ParentPath { get; set; }
/// <summary>
/// True to duplicate the asset, event if the file has been uploaded.
/// </summary>
[FromQuery]
public bool Duplicate { get; set; }
public UpsertAsset ToCommand(DomainId id, AssetFile file)
{
return SimpleMapper.Map(this, new UpsertAsset { File = file, AssetId = id });
}
}
}

4
backend/src/Squidex/Areas/Api/Controllers/Comments/CommentsController.cs

@ -93,7 +93,7 @@ namespace Squidex.Areas.Api.Controllers.Comments
} }
/// <summary> /// <summary>
/// Updates the comment. /// Update a comment.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="commentsId">The id of the comments.</param> /// <param name="commentsId">The id of the comments.</param>
@ -118,7 +118,7 @@ namespace Squidex.Areas.Api.Controllers.Comments
} }
/// <summary> /// <summary>
/// Deletes the comment. /// Delete a comment.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="commentsId">The id of the comments.</param> /// <param name="commentsId">The id of the comments.</param>

2
backend/src/Squidex/Areas/Api/Controllers/Comments/Notifications/UserNotificationsController.cs

@ -67,7 +67,7 @@ namespace Squidex.Areas.Api.Controllers.Comments.Notifications
} }
/// <summary> /// <summary>
/// Deletes the notification. /// Delete a notification.
/// </summary> /// </summary>
/// <param name="userId">The user id.</param> /// <param name="userId">The user id.</param>
/// <param name="commentId">The id of the comment.</param> /// <param name="commentId">The id of the comment.</param>

4
backend/src/Squidex/Areas/Api/Controllers/Schemas/SchemaFieldsController.cs

@ -107,7 +107,7 @@ namespace Squidex.Areas.Api.Controllers.Schemas
} }
/// <summary> /// <summary>
/// Reorders the fields. /// Reorder all fields.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="name">The name of the schema.</param> /// <param name="name">The name of the schema.</param>
@ -132,7 +132,7 @@ namespace Squidex.Areas.Api.Controllers.Schemas
} }
/// <summary> /// <summary>
/// Reorders the nested fields. /// Reorder all nested fields.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="name">The name of the schema.</param> /// <param name="name">The name of the schema.</param>

Loading…
Cancel
Save