diff --git a/src/Tgstation.Server.Client/ApiClient.cs b/src/Tgstation.Server.Client/ApiClient.cs
index 8107fc1913..452bcf1e23 100644
--- a/src/Tgstation.Server.Client/ApiClient.cs
+++ b/src/Tgstation.Server.Client/ApiClient.cs
@@ -21,7 +21,11 @@ namespace Tgstation.Server.Client
public Uri Url { get; }
///
- public ApiHeaders Headers { get; }
+ public ApiHeaders Headers
+ {
+ get => headers;
+ set => headers = value ?? throw new InvalidOperationException("Cannot set null headers!");
+ }
///
public TimeSpan Timeout
@@ -40,6 +44,11 @@ namespace Tgstation.Server.Client
///
readonly List requestLoggers;
+ ///
+ /// Backing field for
+ ///
+ ApiHeaders headers;
+
///
/// Construct an
///
@@ -50,7 +59,7 @@ namespace Tgstation.Server.Client
{
this.httpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient));
Url = url ?? throw new ArgumentNullException(nameof(url));
- Headers = apiHeaders ?? throw new ArgumentNullException(nameof(apiHeaders));
+ headers = apiHeaders ?? throw new ArgumentNullException(nameof(apiHeaders));
requestLoggers = new List();
}
@@ -89,7 +98,7 @@ namespace Tgstation.Server.Client
if (body != null)
message.Content = new StringContent(JsonConvert.SerializeObject(body, serializerSettings), Encoding.UTF8, ApiHeaders.ApplicationJson);
- Headers.SetRequestHeaders(message.Headers, instanceId);
+ headers.SetRequestHeaders(message.Headers, instanceId);
await Task.WhenAll(requestLoggers.Select(x => x.LogRequest(message, cancellationToken))).ConfigureAwait(false);
diff --git a/src/Tgstation.Server.Client/IApiClient.cs b/src/Tgstation.Server.Client/IApiClient.cs
index 48c7d93234..7eb8538156 100644
--- a/src/Tgstation.Server.Client/IApiClient.cs
+++ b/src/Tgstation.Server.Client/IApiClient.cs
@@ -10,7 +10,7 @@ namespace Tgstation.Server.Client
///
interface IApiClient : IDisposable
{
- ApiHeaders Headers { get; }
+ ApiHeaders Headers { get; set; }
Uri Url { get; }
diff --git a/src/Tgstation.Server.Client/IServerClient.cs b/src/Tgstation.Server.Client/IServerClient.cs
index bab14898f7..9432ea9afd 100644
--- a/src/Tgstation.Server.Client/IServerClient.cs
+++ b/src/Tgstation.Server.Client/IServerClient.cs
@@ -16,9 +16,9 @@ namespace Tgstation.Server.Client
Uri Url { get; }
///
- /// The being used to access the server
+ /// The used to access the server
///
- Token Token { get; }
+ Token Token { get; set; }
///
/// The connection timeout
diff --git a/src/Tgstation.Server.Client/ServerClient.cs b/src/Tgstation.Server.Client/ServerClient.cs
index de049e6aa5..4eac7213cc 100644
--- a/src/Tgstation.Server.Client/ServerClient.cs
+++ b/src/Tgstation.Server.Client/ServerClient.cs
@@ -13,7 +13,15 @@ namespace Tgstation.Server.Client
public Uri Url => apiClient.Url;
///
- public Token Token { get; }
+ public Token Token
+ {
+ get => token;
+ set
+ {
+ token = value ?? throw new InvalidOperationException("Cannot set a null Token!");
+ apiClient.Headers = new ApiHeaders(apiClient.Headers.UserAgent, token.Bearer);
+ }
+ }
///
public TimeSpan Timeout
@@ -36,6 +44,11 @@ namespace Tgstation.Server.Client
///
readonly IApiClient apiClient;
+ ///
+ /// Backing field for
+ ///
+ Token token;
+
///
/// Construct a
///
@@ -44,7 +57,7 @@ namespace Tgstation.Server.Client
public ServerClient(IApiClient apiClient, Token token)
{
this.apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient));
- Token = token ?? throw new ArgumentNullException(nameof(token));
+ this.token = token ?? throw new ArgumentNullException(nameof(token));
if (Token.Bearer != apiClient.Headers.Token)
throw new ArgumentOutOfRangeException(nameof(token), token, "Provided token does not match apiClient headers!");
diff --git a/src/Tgstation.Server.Client/Tgstation.Server.Client.csproj b/src/Tgstation.Server.Client/Tgstation.Server.Client.csproj
index 9ebd873506..a3fb7a256e 100644
--- a/src/Tgstation.Server.Client/Tgstation.Server.Client.csproj
+++ b/src/Tgstation.Server.Client/Tgstation.Server.Client.csproj
@@ -3,7 +3,7 @@
netstandard2.0
Full
- 4.0.1
+ 4.0.2
true
Cyberboss
/tg/station 13
@@ -16,7 +16,7 @@
https://raw.githubusercontent.com/tgstation/tgstation-server/master/build/tgs.ico
https://github.com/tgstation/tgstation-server/blob/master/LICENSE
json web api tgstation-server tgstation ss13 byond client
- Initial release
+ Added the ability to change the Token of IServerClient
2018