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
{
///