Finish the clients

This commit is contained in:
Jordan Brown
2018-08-13 20:27:46 -04:00
parent 4cd83cd813
commit 3e8d5f685c
6 changed files with 54 additions and 5 deletions
+6 -1
View File
@@ -54,7 +54,7 @@ namespace Tgstation.Server.Api
public const string InstanceUser = Root + nameof(Models.InstanceUser);
/// <summary>
/// The <see cref="Models.InstanceUser"/> controller
/// The <see cref="Models.ChatBot"/> controller
/// </summary>
public const string Chat = Root + "Chat";
@@ -63,6 +63,11 @@ namespace Tgstation.Server.Api
/// </summary>
public const string DreamMaker = Root + nameof(Models.DreamMaker);
/// <summary>
/// The <see cref="Models.Job"/> controller
/// </summary>
public const string Jobs = Root + nameof(Models.Job);
/// <summary>
/// Apply an <paramref name="id"/> postfix to a <paramref name="route"/>
/// </summary>
@@ -36,7 +36,7 @@ namespace Tgstation.Server.Client.Components
public Task<DreamDaemon> Start(CancellationToken cancellationToken) => apiClient.Create<DreamDaemon>(Routes.DreamDaemon, instance.Id, cancellationToken);
/// <inheritdoc />
public Task<DreamDaemon> Read(CancellationToken cancellationToken) => apiClient.Read<DreamDaemon>(Routes.DreamDaemon, cancellationToken);
public Task<DreamDaemon> Read(CancellationToken cancellationToken) => apiClient.Read<DreamDaemon>(Routes.DreamDaemon, instance.Id, cancellationToken);
/// <inheritdoc />
public Task<DreamDaemon> Update(DreamDaemon dreamDaemon, CancellationToken cancellationToken) => apiClient.Update<DreamDaemon, DreamDaemon>(Routes.DreamDaemon, dreamDaemon, instance.Id, cancellationToken);
@@ -31,7 +31,7 @@ namespace Tgstation.Server.Client.Components
public IDreamMakerClient DreamMaker { get; }
/// <inheritdoc />
public IJobsClient Jobs => throw new NotImplementedException();
public IJobsClient Jobs { get; }
/// <summary>
/// The <see cref="IApiClient"/> for the <see cref="InstanceClient"/>
@@ -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);
}
}
}
@@ -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
{
/// <inheritdoc />
sealed class JobsClient : IJobsClient
{
/// <summary>
/// The <see cref="IApiClient"/> for the <see cref="JobsClient"/>
/// </summary>
readonly IApiClient apiClient;
/// <summary>
/// The <see cref="Instance"/> for the <see cref="JobsClient"/>
/// </summary>
readonly Instance instance;
/// <summary>
/// Construct a <see cref="JobsClient"/>
/// </summary>
/// <param name="apiClient">The value of <see cref="apiClient"/></param>
/// <param name="instance">The value of <see cref="Instance"/></param>
public JobsClient(IApiClient apiClient, Instance instance)
{
this.apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient));
this.instance = instance ?? throw new ArgumentNullException(nameof(instance));
}
/// <inheritdoc />
public Task Cancel(Job job, CancellationToken cancellationToken) => apiClient.Delete(Routes.SetID(Routes.Jobs, job.Id), instance.Id, cancellationToken);
/// <inheritdoc />
public Task<IReadOnlyList<Job>> List(CancellationToken cancellationToken) => apiClient.Read<IReadOnlyList<Job>>(Routes.List(Routes.Jobs), instance.Id, cancellationToken);
/// <inheritdoc />
public Task<Job> Read(Job job, CancellationToken cancellationToken) => apiClient.Read<Job>(Routes.SetID(Routes.Jobs, job.Id), instance.Id, cancellationToken);
}
}
@@ -32,7 +32,7 @@ namespace Tgstation.Server.Client.Components
public Task Delete(CancellationToken cancellationToken) => apiClient.Delete(Routes.Repository, instance.Id, cancellationToken);
/// <inheritdoc />
public Task<Repository> Read(CancellationToken cancellationToken) => apiClient.Read<Repository>(Routes.Repository, cancellationToken);
public Task<Repository> Read(CancellationToken cancellationToken) => apiClient.Read<Repository>(Routes.Repository, instance.Id, cancellationToken);
/// <inheritdoc />
public Task<Repository> Update(Repository repository, CancellationToken cancellationToken) => apiClient.Update<Repository, Repository>(Routes.Repository, repository, instance.Id, cancellationToken);
@@ -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
/// <summary>
/// <see cref="ModelController{TModel}"/> for <see cref="Api.Models.Job"/>s
/// </summary>
[Route("/" + nameof(Job))]
[Route(Routes.Jobs)]
public sealed class JobController : ModelController<Api.Models.Job>
{
/// <summary>