using Hangfire; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Newsbot.Collector.Api.Domain.Consts; using Newsbot.Collector.Domain.Models.Config; using Newsbot.Collector.Services.Jobs; namespace Newsbot.Collector.Api.Controllers.v1; [ApiController] [Route("api/v1/codeprojects")] [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class CodeProjectController { private readonly ConfigSectionConnectionStrings _connectionStrings; private readonly ILogger _logger; public CodeProjectController(ILogger logger, IOptions settings) { _logger = logger; _connectionStrings = settings.Value; } [HttpPost("check")] [Authorize(Roles = Authorization.AdministratorsRole)] public ActionResult PullNow() { BackgroundJob.Enqueue(x => x.InitAndExecute(new CodeProjectWatcherJobOptions { ConnectionStrings = _connectionStrings, FeaturePullReleases = true, FeaturePullCommits = true })); return new AcceptedResult(); } }