using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Tgstation.Server.Api; using Tgstation.Server.Api.Models; namespace Tgstation.Server.Client.Components { /// sealed class JobsClient : PaginatedClient, IJobsClient { /// /// The for the /// readonly Instance instance; /// /// Construct a /// /// The for the . /// The value of public JobsClient(IApiClient apiClient, Instance instance) : base(apiClient) { this.instance = instance ?? throw new ArgumentNullException(nameof(instance)); } /// public Task Cancel(Job job, CancellationToken cancellationToken) => ApiClient.Delete(Routes.SetID(Routes.Jobs, job?.Id ?? throw new ArgumentNullException(nameof(job))), instance.Id, cancellationToken); /// public Task> List(PaginationSettings? paginationSettings, CancellationToken cancellationToken) => ReadPaged(paginationSettings, Routes.ListRoute(Routes.Jobs), instance.Id, cancellationToken); /// public Task> ListActive(PaginationSettings? paginationSettings, CancellationToken cancellationToken) => ReadPaged(paginationSettings, Routes.Jobs, instance.Id, cancellationToken); /// public Task GetId(EntityId job, CancellationToken cancellationToken) => ApiClient.Read(Routes.SetID(Routes.Jobs, job?.Id ?? throw new ArgumentNullException(nameof(job))), instance.Id, cancellationToken); } }