GiantsTools/Giants.WebApi/Controllers/VersionController.cs

51 lines
1.6 KiB
C#
Raw Normal View History

2022-09-05 22:42:41 +02:00
using AutoMapper;
using Giants.DataContract.Contracts.V1;
using Giants.Services;
2022-09-05 22:42:41 +02:00
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
2022-09-05 22:42:41 +02:00
using Microsoft.Identity.Web.Resource;
using System.Threading.Tasks;
namespace Giants.WebApi.Controllers
{
[ApiController]
2020-10-12 23:42:44 +02:00
[ApiVersion("1.0")]
[ApiVersion("1.1")]
[Route("api/[controller]")]
public class VersionController : ControllerBase
{
private readonly IMapper mapper;
2022-09-05 22:42:41 +02:00
private readonly IVersioningService versioningService;
private const string VersionWriteScope = "App.Write";
public VersionController(
IMapper mapper,
2022-09-05 22:42:41 +02:00
IVersioningService versioningService)
{
this.mapper = mapper;
2022-09-05 22:42:41 +02:00
this.versioningService = versioningService;
}
[HttpGet]
2020-08-16 11:03:10 +02:00
public async Task<DataContract.V1.VersionInfo> GetVersionInfo(string appName)
{
2022-09-05 22:42:41 +02:00
ArgumentUtility.CheckStringForNullOrEmpty(appName);
Services.VersionInfo versionInfo = await this.versioningService.GetVersionInfo(appName);
return this.mapper.Map<DataContract.V1.VersionInfo>(versionInfo);
}
2022-09-05 22:42:41 +02:00
[Authorize]
[RequiredScopeOrAppPermission(
AcceptedAppPermission = new[] { VersionWriteScope }) ]
[HttpPost]
public async Task UpdateVersionInfo([FromBody] VersionInfoUpdate versionInfoUpdate)
{
ArgumentUtility.CheckForNull(versionInfoUpdate);
await this.versioningService.UpdateVersionInfo(versionInfoUpdate.AppName, versionInfoUpdate.AppVersion, versionInfoUpdate.FileName);
}
}
}