mirror of
https://github.com/tgstation/tgstation-server.git
synced 2026-08-26 14:37:44 +01:00
Fix backwards compatibility issues
This commit is contained in:
@@ -50,6 +50,11 @@ namespace Tgstation.Server.Api
|
||||
/// </summary>
|
||||
public const string OAuthAuthenticationScheme = "OAuth";
|
||||
|
||||
/// <summary>
|
||||
/// Added to <see cref="MediaTypeNames.Application"/> in netstandard2.1. Can't use because of Tgstation.Server.Migrator.
|
||||
/// </summary>
|
||||
public const string ApplicationJsonMime = "application/json";
|
||||
|
||||
/// <summary>
|
||||
/// Get the version of the <see cref="Api"/> the caller is using.
|
||||
/// </summary>
|
||||
@@ -167,9 +172,9 @@ namespace Tgstation.Server.Api
|
||||
errorBuilder.Append(message);
|
||||
}
|
||||
|
||||
var jsonAccept = new Microsoft.Net.Http.Headers.MediaTypeHeaderValue(MediaTypeNames.Application.Json);
|
||||
var jsonAccept = new Microsoft.Net.Http.Headers.MediaTypeHeaderValue(ApplicationJsonMime);
|
||||
if (!requestHeaders.Accept.Any(x => jsonAccept.IsSubsetOf(x)))
|
||||
AddError(HeaderTypes.Accept, $"Client does not accept {MediaTypeNames.Application.Json}!");
|
||||
AddError(HeaderTypes.Accept, $"Client does not accept {ApplicationJsonMime}!");
|
||||
|
||||
if (!requestHeaders.Headers.TryGetValue(HeaderNames.UserAgent, out var userAgentValues) || userAgentValues.Count == 0)
|
||||
AddError(HeaderTypes.UserAgent, $"Missing {HeaderNames.UserAgent} header!");
|
||||
@@ -306,7 +311,7 @@ namespace Tgstation.Server.Api
|
||||
throw new InvalidOperationException("Specified different instance IDs in constructor and SetRequestHeaders!");
|
||||
|
||||
headers.Clear();
|
||||
headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json));
|
||||
headers.Accept.Add(new MediaTypeWithQualityHeaderValue(ApplicationJsonMime));
|
||||
headers.UserAgent.Add(new ProductInfoHeaderValue(UserAgent));
|
||||
headers.Add(ApiVersionHeader, new ProductHeaderValue(AssemblyName.Name, ApiVersion.ToString()).ToString());
|
||||
if (OAuthProvider.HasValue)
|
||||
|
||||
@@ -26,6 +26,12 @@ namespace Tgstation.Server.Client
|
||||
/// <inheritdoc />
|
||||
sealed class ApiClient : IApiClient
|
||||
{
|
||||
/// <summary>
|
||||
/// PATCH <see cref="HttpMethod"/>.
|
||||
/// </summary>
|
||||
/// <remarks>HOW IS THIS NOT INCLUDED IN THE FRAMEWORK??!?!?</remarks>
|
||||
static readonly HttpMethod HttpPatch = new ("PATCH");
|
||||
|
||||
/// <inheritdoc />
|
||||
public Uri Url { get; }
|
||||
|
||||
@@ -77,7 +83,7 @@ namespace Tgstation.Server.Client
|
||||
/// Get the <see cref="JsonSerializerSettings"/> to use.
|
||||
/// </summary>
|
||||
/// <returns>A new <see cref="JsonSerializerSettings"/> instance.</returns>
|
||||
static JsonSerializerSettings GetSerializerSettings() => new JsonSerializerSettings
|
||||
static JsonSerializerSettings GetSerializerSettings() => new ()
|
||||
{
|
||||
ContractResolver = new CamelCasePropertyNamesContractResolver(),
|
||||
Converters = new[] { new VersionConverter() },
|
||||
@@ -171,7 +177,7 @@ namespace Tgstation.Server.Client
|
||||
public Task<TResult> Update<TBody, TResult>(string route, TBody body, CancellationToken cancellationToken) where TBody : class => RunRequest<TBody, TResult>(route, body, HttpMethod.Post, null, false, cancellationToken);
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task Patch(string route, CancellationToken cancellationToken) => RunRequest<object>(route, null, HttpMethod.Patch, null, false, cancellationToken);
|
||||
public Task Patch(string route, CancellationToken cancellationToken) => RunRequest<object>(route, null, HttpPatch, null, false, cancellationToken);
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task Update<TBody>(string route, TBody body, CancellationToken cancellationToken) where TBody : class => RunRequest<TBody, object>(route, body, HttpMethod.Post, null, false, cancellationToken);
|
||||
@@ -204,7 +210,7 @@ namespace Tgstation.Server.Client
|
||||
public Task<TResult> Create<TResult>(string route, long instanceId, CancellationToken cancellationToken) => RunRequest<object, TResult>(route, new object(), HttpMethod.Put, instanceId, false, cancellationToken);
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<TResult> Patch<TResult>(string route, long instanceId, CancellationToken cancellationToken) => RunRequest<object, TResult>(route, new object(), HttpMethod.Patch, instanceId, false, cancellationToken);
|
||||
public Task<TResult> Patch<TResult>(string route, long instanceId, CancellationToken cancellationToken) => RunRequest<object, TResult>(route, new object(), HttpPatch, instanceId, false, cancellationToken);
|
||||
|
||||
/// <inheritdoc />
|
||||
public void AddRequestLogger(IRequestLogger requestLogger) => requestLoggers.Add(requestLogger ?? throw new ArgumentNullException(nameof(requestLogger)));
|
||||
@@ -314,7 +320,7 @@ namespace Tgstation.Server.Client
|
||||
content = new StringContent(
|
||||
JsonConvert.SerializeObject(body, typeof(TBody), Formatting.None, GetSerializerSettings()),
|
||||
Encoding.UTF8,
|
||||
MediaTypeNames.Application.Json);
|
||||
ApiHeaders.ApplicationJsonMime);
|
||||
|
||||
return RunRequest<TResult>(
|
||||
route,
|
||||
|
||||
@@ -30,14 +30,6 @@ namespace Tgstation.Server.Client
|
||||
return new CachedResponseStream(response, stream);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override async ValueTask DisposeAsync()
|
||||
{
|
||||
await base.DisposeAsync().ConfigureAwait(false);
|
||||
await responseStream.DisposeAsync().ConfigureAwait(false);
|
||||
response.Dispose();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanRead => responseStream.CanRead;
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ namespace Tgstation.Server.Client.Components
|
||||
cancellationToken);
|
||||
|
||||
if (memoryStream != null)
|
||||
await uploadStream!.CopyToAsync(memoryStream, cancellationToken).ConfigureAwait(false);
|
||||
await uploadStream!.CopyToAsync(memoryStream).ConfigureAwait(false);
|
||||
|
||||
var configFile = await configFileTask.ConfigureAwait(false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user