using Microsoft.AspNetCore.Authorization; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Robware.Auth.API; namespace Robware.Api.Auth.Controllers { [ApiController] [Route("[controller]")] public class ApiController : ControllerBase { private readonly ILogger _logger; private readonly IApiKeyValidator _apiKeyValidator; private readonly IApiKeys _apiKeyRepository; public ApiController(ILogger logger, IApiKeyValidator apiKeyValidator, IApiKeys apiKeyRepository) { _logger = logger; _apiKeyValidator = apiKeyValidator; _apiKeyRepository = apiKeyRepository; } [HttpGet(nameof(Validate))] public async Task Validate(string key) => await _apiKeyValidator.Validate(key) ? (ActionResult) Ok() : Unauthorized(); [HttpPost(nameof(Create))] [Authorize] public async Task> Create(string name) => await _apiKeyRepository.Create(name); } }