More clients

This commit is contained in:
Jordan Brown
2018-08-13 20:13:02 -04:00
parent a53d344bd0
commit 4cd83cd813
8 changed files with 112 additions and 11 deletions
+10
View File
@@ -53,6 +53,16 @@ namespace Tgstation.Server.Api
/// </summary>
public const string InstanceUser = Root + nameof(Models.InstanceUser);
/// <summary>
/// The <see cref="Models.InstanceUser"/> controller
/// </summary>
public const string Chat = Root + "Chat";
/// <summary>
/// The <see cref="Models.DreamMaker"/> controller
/// </summary>
public const string DreamMaker = Root + nameof(Models.DreamMaker);
/// <summary>
/// Apply an <paramref name="id"/> postfix to a <paramref name="route"/>
/// </summary>
@@ -0,0 +1,45 @@
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 ChatBotsClient : IChatBotsClient
{
/// <summary>
/// The <see cref="IApiClient"/> for the <see cref="ChatBotsClient"/>
/// </summary>
readonly IApiClient apiClient;
/// <summary>
/// The <see cref="Instance"/> for the <see cref="ChatBotsClient"/>
/// </summary>
readonly Instance instance;
/// <summary>
/// Construct a <see cref="ChatBotsClient"/>
/// </summary>
/// <param name="apiClient">The value of <see cref="apiClient"/></param>
/// <param name="instance">The value of <see cref="instance"/></param>
public ChatBotsClient(IApiClient apiClient, Instance instance)
{
this.apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient));
this.instance = instance ?? throw new ArgumentNullException(nameof(instance));
}
/// <inheritdoc />
public Task<ChatBot> Create(ChatBot settings, CancellationToken cancellationToken) => apiClient.Create<ChatBot, ChatBot>(Routes.Chat, settings, instance.Id, cancellationToken);
/// <inheritdoc />
public Task Delete(ChatBot settings, CancellationToken cancellationToken) => apiClient.Delete(Routes.SetID(Routes.Chat, settings.Id), instance.Id, cancellationToken);
/// <inheritdoc />
public Task<IReadOnlyList<ChatBot>> List(CancellationToken cancellationToken) => apiClient.Create<IReadOnlyList<ChatBot>>(Routes.List(Routes.Chat), instance.Id, cancellationToken);
/// <inheritdoc />
public Task<ChatBot> Update(ChatBot settings, CancellationToken cancellationToken) => apiClient.Update<ChatBot, ChatBot>(Routes.Chat, settings, instance.Id, cancellationToken);
}
}
@@ -0,0 +1,41 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Api;
using Tgstation.Server.Api.Models;
namespace Tgstation.Server.Client.Components
{
/// <inheritdoc />
sealed class DreamMakerClient : IDreamMakerClient
{
/// <summary>
/// The <see cref="IApiClient"/> for the <see cref="DreamMakerClient"/>
/// </summary>
private IApiClient apiClient;
/// <summary>
/// The <see cref="Instance"/> for the <see cref="DreamMakerClient"/>
/// </summary>
private Instance instance;
/// <summary>
/// Construct a <see cref="DreamMakerClient"/>
/// </summary>
/// <param name="apiClient">The value of <see cref="apiClient"/></param>
/// <param name="instance">The value of <see cref="Instance"/></param>
public DreamMakerClient(IApiClient apiClient, Instance instance)
{
this.apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient));
this.instance = instance ?? throw new ArgumentNullException(nameof(instance));
}
/// <inheritdoc />
public Task<Job> Compile(CancellationToken cancellationToken) => apiClient.Create<Job>(Routes.DreamMaker, instance.Id, cancellationToken);
/// <inheritdoc />
public Task<DreamMaker> Read(CancellationToken cancellationToken) => apiClient.Read<DreamMaker>(Routes.DreamMaker, instance.Id, cancellationToken);
/// <inheritdoc />
public Task<DreamMaker> Update(DreamMaker dreamMaker, CancellationToken cancellationToken) => apiClient.Update<DreamMaker, DreamMaker>(Routes.DreamMaker, dreamMaker, instance.Id, cancellationToken);
}
}
@@ -22,7 +22,7 @@ namespace Tgstation.Server.Client.Components
/// <param name="dreamMaker">The <see cref="DreamMaker"/> to update</param>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation</param>
/// <returns>A <see cref="Task"/> representing the running operation</returns>
Task Update(DreamMaker dreamMaker, CancellationToken cancellationToken);
Task<DreamMaker> Update(DreamMaker dreamMaker, CancellationToken cancellationToken);
/// <summary>
/// Compile the current repository revision
@@ -22,13 +22,13 @@ namespace Tgstation.Server.Client.Components
public IConfigurationClient Configuration { get; }
/// <inheritdoc />
public IInstanceUserClient Users => throw new NotImplementedException();
public IInstanceUserClient Users { get; }
/// <inheritdoc />
public IChatBotsClient ChatBots => throw new NotImplementedException();
public IChatBotsClient ChatBots { get; }
/// <inheritdoc />
public IDreamMakerClient DreamMaker => throw new NotImplementedException();
public IDreamMakerClient DreamMaker { get; }
/// <inheritdoc />
public IJobsClient Jobs => throw new NotImplementedException();
@@ -52,6 +52,9 @@ namespace Tgstation.Server.Client.Components
Repository = new RepositoryClient(apiClient, instance);
DreamDaemon = new DreamDaemonClient(apiClient, instance);
Configuration = new ConfigurationClient(apiClient, instance);
Users = new InstanceUserClient(apiClient, instance);
ChatBots = new ChatBotsClient(apiClient, instance);
DreamMaker = new DreamMakerClient(apiClient, instance);
}
}
}
@@ -31,17 +31,17 @@ namespace Tgstation.Server.Client.Components
}
/// <inheritdoc />
public Task<InstanceUser> Create(InstanceUser user, CancellationToken cancellationToken) => apiClient.Create<InstanceUser, InstanceUser>(Routes.InstanceUser, user, cancellationToken);
public Task<InstanceUser> Create(InstanceUser user, CancellationToken cancellationToken) => apiClient.Create<InstanceUser, InstanceUser>(Routes.InstanceUser, user, instance.Id, cancellationToken);
public Task Delete(InstanceUser instanceUser, CancellationToken cancellationToken) => apiClient.Delete(Routes.SetID(Routes.InstanceUser, instanceUser.UserId.Value), cancellationToken);
public Task Delete(InstanceUser instanceUser, CancellationToken cancellationToken) => apiClient.Delete(Routes.SetID(Routes.InstanceUser, instanceUser.UserId.Value), instance.Id, cancellationToken);
/// <inheritdoc />
public Task<InstanceUser> Read(CancellationToken cancellationToken) => apiClient.Read<InstanceUser>(Routes.InstanceUser, cancellationToken);
public Task<InstanceUser> Read(CancellationToken cancellationToken) => apiClient.Read<InstanceUser>(Routes.InstanceUser, instance.Id, cancellationToken);
/// <inheritdoc />
public Task<InstanceUser> Update(InstanceUser user, CancellationToken cancellationToken) => apiClient.Update<InstanceUser, InstanceUser>(Routes.InstanceUser, user, cancellationToken);
public Task<InstanceUser> Update(InstanceUser user, CancellationToken cancellationToken) => apiClient.Update<InstanceUser, InstanceUser>(Routes.InstanceUser, user, instance.Id, cancellationToken);
/// <inheritdoc />
public Task<IReadOnlyList<InstanceUser>> List(CancellationToken cancellationToken) => apiClient.Read<IReadOnlyList<InstanceUser>>(Routes.List(Routes.InstanceUser), cancellationToken);
public Task<IReadOnlyList<InstanceUser>> List(CancellationToken cancellationToken) => apiClient.Read<IReadOnlyList<InstanceUser>>(Routes.List(Routes.InstanceUser), instance.Id, cancellationToken);
}
}
@@ -9,6 +9,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Tgstation.Server.Api;
using Tgstation.Server.Api.Models;
using Tgstation.Server.Api.Rights;
using Tgstation.Server.Host.Components;
@@ -21,7 +22,7 @@ namespace Tgstation.Server.Host.Controllers
/// <summary>
/// <see cref="ModelController{TModel}"/> for managing <see cref="Api.Models.ChatBot"/>s
/// </summary>
[Route("/" + nameof(Components.Chat.Chat))]
[Route(Routes.Chat)]
public sealed class ChatController : ModelController<Api.Models.ChatBot>
{
/// <summary>
@@ -6,6 +6,7 @@ using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Api;
using Tgstation.Server.Api.Rights;
using Tgstation.Server.Host.Components;
using Tgstation.Server.Host.Core;
@@ -17,7 +18,7 @@ namespace Tgstation.Server.Host.Controllers
/// <summary>
/// Controller for managing the compiler
/// </summary>
[Route("/" + nameof(Api.Models.DreamMaker))]
[Route(Routes.DreamMaker)]
public sealed class DreamMakerController : ModelController<Api.Models.DreamMaker>
{
/// <summary>