GiantsTools/Giants.WebApi/Controllers/VersionController.cs

62 lines
2.0 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;
2022-09-09 07:31:24 +02:00
using System;
2022-09-05 22:42:41 +02:00
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]
2022-09-09 07:31:24 +02:00
public async Task<DataContract.V1.VersionInfo> GetVersionInfo(string appName, string branchName)
{
ArgumentUtility.CheckStringForNullOrEmpty(appName);
VersionInfo versionInfo = await this.versioningService.GetVersionInfo(appName, branchName);
if (versionInfo == null)
{
throw new ArgumentException($"No version information for {appName} ({branchName}) found.", 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);
2022-09-09 07:31:24 +02:00
await this.versioningService.UpdateVersionInfo(
appName: versionInfoUpdate.AppName,
appVersion: versionInfoUpdate.AppVersion,
fileName: versionInfoUpdate.FileName,
branchName: versionInfoUpdate.BranchName,
force: versionInfoUpdate.ForceUpdate);
2022-09-05 22:42:41 +02:00
}
}
}