diff --git a/src/Tgstation.Server.Api/Routes.cs b/src/Tgstation.Server.Api/Routes.cs index 16bd1494c5..da1bfc9bd9 100644 --- a/src/Tgstation.Server.Api/Routes.cs +++ b/src/Tgstation.Server.Api/Routes.cs @@ -54,7 +54,7 @@ namespace Tgstation.Server.Api public const string InstanceUser = Root + nameof(Models.InstanceUser); /// - /// The controller + /// The controller /// public const string Chat = Root + "Chat"; @@ -63,6 +63,11 @@ namespace Tgstation.Server.Api /// public const string DreamMaker = Root + nameof(Models.DreamMaker); + /// + /// The controller + /// + public const string Jobs = Root + nameof(Models.Job); + /// /// Apply an postfix to a /// diff --git a/src/Tgstation.Server.Client/Components/DreamDaemonClient.cs b/src/Tgstation.Server.Client/Components/DreamDaemonClient.cs index 810590d809..d776c09f69 100644 --- a/src/Tgstation.Server.Client/Components/DreamDaemonClient.cs +++ b/src/Tgstation.Server.Client/Components/DreamDaemonClient.cs @@ -36,7 +36,7 @@ namespace Tgstation.Server.Client.Components public Task Start(CancellationToken cancellationToken) => apiClient.Create(Routes.DreamDaemon, instance.Id, cancellationToken); /// - public Task Read(CancellationToken cancellationToken) => apiClient.Read(Routes.DreamDaemon, cancellationToken); + public Task Read(CancellationToken cancellationToken) => apiClient.Read(Routes.DreamDaemon, instance.Id, cancellationToken); /// public Task Update(DreamDaemon dreamDaemon, CancellationToken cancellationToken) => apiClient.Update(Routes.DreamDaemon, dreamDaemon, instance.Id, cancellationToken); diff --git a/src/Tgstation.Server.Client/Components/InstanceClient.cs b/src/Tgstation.Server.Client/Components/InstanceClient.cs index 3d961eb701..2bf76eca71 100644 --- a/src/Tgstation.Server.Client/Components/InstanceClient.cs +++ b/src/Tgstation.Server.Client/Components/InstanceClient.cs @@ -31,7 +31,7 @@ namespace Tgstation.Server.Client.Components public IDreamMakerClient DreamMaker { get; } /// - public IJobsClient Jobs => throw new NotImplementedException(); + public IJobsClient Jobs { get; } /// /// The for the @@ -55,6 +55,7 @@ namespace Tgstation.Server.Client.Components Users = new InstanceUserClient(apiClient, instance); ChatBots = new ChatBotsClient(apiClient, instance); DreamMaker = new DreamMakerClient(apiClient, instance); + Jobs = new JobsClient(apiClient, instance); } } } \ No newline at end of file diff --git a/src/Tgstation.Server.Client/Components/JobsClient.cs b/src/Tgstation.Server.Client/Components/JobsClient.cs new file mode 100644 index 0000000000..283a36a35d --- /dev/null +++ b/src/Tgstation.Server.Client/Components/JobsClient.cs @@ -0,0 +1,42 @@ +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 : IJobsClient + { + /// + /// The for the + /// + readonly IApiClient apiClient; + /// + /// The for the + /// + readonly Instance instance; + + /// + /// Construct a + /// + /// The value of + /// The value of + public JobsClient(IApiClient apiClient, Instance instance) + { + this.apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); + this.instance = instance ?? throw new ArgumentNullException(nameof(instance)); + } + + /// + public Task Cancel(Job job, CancellationToken cancellationToken) => apiClient.Delete(Routes.SetID(Routes.Jobs, job.Id), instance.Id, cancellationToken); + + /// + public Task> List(CancellationToken cancellationToken) => apiClient.Read>(Routes.List(Routes.Jobs), instance.Id, cancellationToken); + + /// + public Task Read(Job job, CancellationToken cancellationToken) => apiClient.Read(Routes.SetID(Routes.Jobs, job.Id), instance.Id, cancellationToken); + } +} \ No newline at end of file diff --git a/src/Tgstation.Server.Client/Components/RepositoryClient.cs b/src/Tgstation.Server.Client/Components/RepositoryClient.cs index 8bc25dff55..7b52a0cc1c 100644 --- a/src/Tgstation.Server.Client/Components/RepositoryClient.cs +++ b/src/Tgstation.Server.Client/Components/RepositoryClient.cs @@ -32,7 +32,7 @@ namespace Tgstation.Server.Client.Components public Task Delete(CancellationToken cancellationToken) => apiClient.Delete(Routes.Repository, instance.Id, cancellationToken); /// - public Task Read(CancellationToken cancellationToken) => apiClient.Read(Routes.Repository, cancellationToken); + public Task Read(CancellationToken cancellationToken) => apiClient.Read(Routes.Repository, instance.Id, cancellationToken); /// public Task Update(Repository repository, CancellationToken cancellationToken) => apiClient.Update(Routes.Repository, repository, instance.Id, cancellationToken); diff --git a/src/Tgstation.Server.Host/Controllers/JobController.cs b/src/Tgstation.Server.Host/Controllers/JobController.cs index b946cbe94c..b48033ef4e 100644 --- a/src/Tgstation.Server.Host/Controllers/JobController.cs +++ b/src/Tgstation.Server.Host/Controllers/JobController.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Net; using System.Threading; using System.Threading.Tasks; +using Tgstation.Server.Api; using Tgstation.Server.Host.Core; using Tgstation.Server.Host.Models; using Tgstation.Server.Host.Security; @@ -15,7 +16,7 @@ namespace Tgstation.Server.Host.Controllers /// /// for s /// - [Route("/" + nameof(Job))] + [Route(Routes.Jobs)] public sealed class JobController : ModelController { ///