API: Cleaning up the configuration's documentation

This commit is contained in:
Zoe Roux 2021-10-03 19:19:19 +02:00
parent cd5b953e0f
commit a7a994ab41
2 changed files with 31 additions and 9 deletions

View File

@ -29,6 +29,7 @@ using IdentityServer4.Services;
using Kyoo.Abstractions.Controllers;
using Kyoo.Abstractions.Models;
using Kyoo.Abstractions.Models.Exceptions;
using Kyoo.Abstractions.Models.Utils;
using Kyoo.Authentication.Models;
using Kyoo.Authentication.Models.DTO;
using Microsoft.AspNetCore.Authentication;
@ -36,14 +37,15 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using static Kyoo.Abstractions.Models.Utils.Constants;
namespace Kyoo.Authentication.Views
{
/// <summary>
/// The class responsible for login, logout, permissions and claims of a user.
/// The endpoint responsible for login, logout, permissions and claims of a user.
/// </summary>
[Route("api/account")]
[Route("api/accounts")]
[Route("api/account", Order = AlternativeRoute)]
[ApiController]
public class AccountApi : Controller, IProfileService
{
@ -78,11 +80,16 @@ namespace Kyoo.Authentication.Views
}
/// <summary>
/// Register a new user and return a OTAC to connect to it.
/// Register
/// </summary>
/// <remarks>
/// Register a new user and return a OTAC to connect to it.
/// </remarks>
/// <param name="request">The DTO register request</param>
/// <returns>A OTAC to connect to this new account</returns>
[HttpPost("register")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status409Conflict, Type = typeof(RequestError))]
public async Task<IActionResult> Register([FromBody] RegisterRequest request)
{
User user = request.ToUser();
@ -96,7 +103,7 @@ namespace Kyoo.Authentication.Views
}
catch (DuplicatedItemException)
{
return Conflict(new { Errors = new { Duplicate = new[] { "A user with this name already exists" } } });
return Conflict(new RequestError("A user with this name already exists"));
}
return Ok(new { Otac = user.ExtraData["otac"] });

View File

@ -19,18 +19,23 @@
using System;
using System.Threading.Tasks;
using Kyoo.Abstractions.Controllers;
using Kyoo.Abstractions.Models.Attributes;
using Kyoo.Abstractions.Models.Exceptions;
using Kyoo.Abstractions.Models.Permissions;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using static Kyoo.Abstractions.Models.Utils.Constants;
namespace Kyoo.Core.Api
{
/// <summary>
/// An API to retrieve or edit configuration settings
/// </summary>
[Route("api/config")]
[Route("api/configuration")]
[Route("api/config", Order = AlternativeRoute)]
[ApiController]
[PartialPermission("Configuration", Group = Group.Admin)]
[ApiDefinition("Configuration", Group = AdminGroup)]
public class ConfigurationApi : Controller
{
/// <summary>
@ -48,14 +53,19 @@ namespace Kyoo.Core.Api
}
/// <summary>
/// Get a permission from it's slug.
/// Get config value
/// </summary>
/// <remarks>
/// Retrieve a configuration's value from it's slug.
/// </remarks>
/// <param name="slug">The permission to retrieve. You can use ':' or "__" to get a child value.</param>
/// <returns>The associate value or list of values.</returns>
/// <response code="200">Return the configuration value or the list of configurations</response>
/// <response code="404">No configuration exists for the given slug</response>
[HttpGet("{slug}")]
[Permission(nameof(ConfigurationApi), Kind.Read, Group.Admin)]
[PartialPermission(Kind.Read)]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public ActionResult<object> GetConfiguration(string slug)
{
try
@ -69,15 +79,20 @@ namespace Kyoo.Core.Api
}
/// <summary>
/// Edit a permission from it's slug.
/// Edit config
/// </summary>
/// <remarks>
/// Edit a configuration's value from it's slug.
/// </remarks>
/// <param name="slug">The permission to edit. You can use ':' or "__" to get a child value.</param>
/// <param name="newValue">The new value of the configuration</param>
/// <returns>The edited value.</returns>
/// <response code="200">Return the edited value</response>
/// <response code="404">No configuration exists for the given slug</response>
[HttpPut("{slug}")]
[Permission(nameof(ConfigurationApi), Kind.Write, Group.Admin)]
[PartialPermission(Kind.Write)]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<ActionResult<object>> EditConfiguration(string slug, [FromBody] object newValue)
{
try