From 4cd83cd813c58e56df2ed9a3adf9b1c4e6268b9b Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Mon, 13 Aug 2018 20:13:02 -0400 Subject: [PATCH] More clients --- src/Tgstation.Server.Api/Routes.cs | 10 +++++ .../Components/ChatBotsClient.cs | 45 +++++++++++++++++++ .../Components/DreamMakerClient.cs | 41 +++++++++++++++++ .../Components/IDreamMakerClient.cs | 2 +- .../Components/InstanceClient.cs | 9 ++-- .../Components/InstanceUserClient.cs | 10 ++--- .../Controllers/ChatController.cs | 3 +- .../Controllers/DreamMakerController.cs | 3 +- 8 files changed, 112 insertions(+), 11 deletions(-) create mode 100644 src/Tgstation.Server.Client/Components/ChatBotsClient.cs create mode 100644 src/Tgstation.Server.Client/Components/DreamMakerClient.cs diff --git a/src/Tgstation.Server.Api/Routes.cs b/src/Tgstation.Server.Api/Routes.cs index 3cf40e9c7f..16bd1494c5 100644 --- a/src/Tgstation.Server.Api/Routes.cs +++ b/src/Tgstation.Server.Api/Routes.cs @@ -53,6 +53,16 @@ namespace Tgstation.Server.Api /// public const string InstanceUser = Root + nameof(Models.InstanceUser); + /// + /// The controller + /// + public const string Chat = Root + "Chat"; + + /// + /// The controller + /// + public const string DreamMaker = Root + nameof(Models.DreamMaker); + /// /// Apply an postfix to a /// diff --git a/src/Tgstation.Server.Client/Components/ChatBotsClient.cs b/src/Tgstation.Server.Client/Components/ChatBotsClient.cs new file mode 100644 index 0000000000..b9fc623102 --- /dev/null +++ b/src/Tgstation.Server.Client/Components/ChatBotsClient.cs @@ -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 +{ + /// + sealed class ChatBotsClient : IChatBotsClient + { + /// + /// The for the + /// + readonly IApiClient apiClient; + /// + /// The for the + /// + readonly Instance instance; + + /// + /// Construct a + /// + /// The value of + /// The value of + public ChatBotsClient(IApiClient apiClient, Instance instance) + { + this.apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); + this.instance = instance ?? throw new ArgumentNullException(nameof(instance)); + } + + /// + public Task Create(ChatBot settings, CancellationToken cancellationToken) => apiClient.Create(Routes.Chat, settings, instance.Id, cancellationToken); + + /// + public Task Delete(ChatBot settings, CancellationToken cancellationToken) => apiClient.Delete(Routes.SetID(Routes.Chat, settings.Id), instance.Id, cancellationToken); + + /// + public Task> List(CancellationToken cancellationToken) => apiClient.Create>(Routes.List(Routes.Chat), instance.Id, cancellationToken); + + /// + public Task Update(ChatBot settings, CancellationToken cancellationToken) => apiClient.Update(Routes.Chat, settings, instance.Id, cancellationToken); + } +} \ No newline at end of file diff --git a/src/Tgstation.Server.Client/Components/DreamMakerClient.cs b/src/Tgstation.Server.Client/Components/DreamMakerClient.cs new file mode 100644 index 0000000000..ae331617e2 --- /dev/null +++ b/src/Tgstation.Server.Client/Components/DreamMakerClient.cs @@ -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 +{ + /// + sealed class DreamMakerClient : IDreamMakerClient + { + /// + /// The for the + /// + private IApiClient apiClient; + /// + /// The for the + /// + private Instance instance; + + /// + /// Construct a + /// + /// The value of + /// The value of + public DreamMakerClient(IApiClient apiClient, Instance instance) + { + this.apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); + this.instance = instance ?? throw new ArgumentNullException(nameof(instance)); + } + + /// + public Task Compile(CancellationToken cancellationToken) => apiClient.Create(Routes.DreamMaker, instance.Id, cancellationToken); + + /// + public Task Read(CancellationToken cancellationToken) => apiClient.Read(Routes.DreamMaker, instance.Id, cancellationToken); + + /// + public Task Update(DreamMaker dreamMaker, CancellationToken cancellationToken) => apiClient.Update(Routes.DreamMaker, dreamMaker, instance.Id, cancellationToken); + } +} \ No newline at end of file diff --git a/src/Tgstation.Server.Client/Components/IDreamMakerClient.cs b/src/Tgstation.Server.Client/Components/IDreamMakerClient.cs index a8da1a3a24..fa202a8e18 100644 --- a/src/Tgstation.Server.Client/Components/IDreamMakerClient.cs +++ b/src/Tgstation.Server.Client/Components/IDreamMakerClient.cs @@ -22,7 +22,7 @@ namespace Tgstation.Server.Client.Components /// The to update /// The for the operation /// A representing the running operation - Task Update(DreamMaker dreamMaker, CancellationToken cancellationToken); + Task Update(DreamMaker dreamMaker, CancellationToken cancellationToken); /// /// Compile the current repository revision diff --git a/src/Tgstation.Server.Client/Components/InstanceClient.cs b/src/Tgstation.Server.Client/Components/InstanceClient.cs index 65f0bf9056..3d961eb701 100644 --- a/src/Tgstation.Server.Client/Components/InstanceClient.cs +++ b/src/Tgstation.Server.Client/Components/InstanceClient.cs @@ -22,13 +22,13 @@ namespace Tgstation.Server.Client.Components public IConfigurationClient Configuration { get; } /// - public IInstanceUserClient Users => throw new NotImplementedException(); + public IInstanceUserClient Users { get; } /// - public IChatBotsClient ChatBots => throw new NotImplementedException(); + public IChatBotsClient ChatBots { get; } /// - public IDreamMakerClient DreamMaker => throw new NotImplementedException(); + public IDreamMakerClient DreamMaker { get; } /// 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); } } } \ No newline at end of file diff --git a/src/Tgstation.Server.Client/Components/InstanceUserClient.cs b/src/Tgstation.Server.Client/Components/InstanceUserClient.cs index d913d622f5..75d95a91bf 100644 --- a/src/Tgstation.Server.Client/Components/InstanceUserClient.cs +++ b/src/Tgstation.Server.Client/Components/InstanceUserClient.cs @@ -31,17 +31,17 @@ namespace Tgstation.Server.Client.Components } /// - public Task Create(InstanceUser user, CancellationToken cancellationToken) => apiClient.Create(Routes.InstanceUser, user, cancellationToken); + public Task Create(InstanceUser user, CancellationToken cancellationToken) => apiClient.Create(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); /// - public Task Read(CancellationToken cancellationToken) => apiClient.Read(Routes.InstanceUser, cancellationToken); + public Task Read(CancellationToken cancellationToken) => apiClient.Read(Routes.InstanceUser, instance.Id, cancellationToken); /// - public Task Update(InstanceUser user, CancellationToken cancellationToken) => apiClient.Update(Routes.InstanceUser, user, cancellationToken); + public Task Update(InstanceUser user, CancellationToken cancellationToken) => apiClient.Update(Routes.InstanceUser, user, instance.Id, cancellationToken); /// - public Task> List(CancellationToken cancellationToken) => apiClient.Read>(Routes.List(Routes.InstanceUser), cancellationToken); + public Task> List(CancellationToken cancellationToken) => apiClient.Read>(Routes.List(Routes.InstanceUser), instance.Id, cancellationToken); } } \ No newline at end of file diff --git a/src/Tgstation.Server.Host/Controllers/ChatController.cs b/src/Tgstation.Server.Host/Controllers/ChatController.cs index e2060eeea4..3b823ea0ad 100644 --- a/src/Tgstation.Server.Host/Controllers/ChatController.cs +++ b/src/Tgstation.Server.Host/Controllers/ChatController.cs @@ -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 /// /// for managing s /// - [Route("/" + nameof(Components.Chat.Chat))] + [Route(Routes.Chat)] public sealed class ChatController : ModelController { /// diff --git a/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs b/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs index 2b855a85a2..50e088ef68 100644 --- a/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs +++ b/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs @@ -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 /// /// Controller for managing the compiler /// - [Route("/" + nameof(Api.Models.DreamMaker))] + [Route(Routes.DreamMaker)] public sealed class DreamMakerController : ModelController { ///