From 0631f80637eed7c8412c2151d57012de4db6fb8a Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 5 Jul 2020 11:18:57 -0400 Subject: [PATCH] Cleanup of some ApiController method calls --- .../Controllers/AdministrationController.cs | 8 ++--- .../Controllers/ApiController.cs | 32 ++++++++++++++++--- .../Controllers/ChatController.cs | 2 +- .../Controllers/ConfigurationController.cs | 10 ++++-- .../Controllers/InstanceController.cs | 2 +- .../Controllers/InstanceUserController.cs | 3 +- .../Controllers/RepositoryController.cs | 4 +-- .../Controllers/UserController.cs | 2 +- 8 files changed, 45 insertions(+), 18 deletions(-) diff --git a/src/Tgstation.Server.Host/Controllers/AdministrationController.cs b/src/Tgstation.Server.Host/Controllers/AdministrationController.cs index 758f667e8e..7a0219d18f 100644 --- a/src/Tgstation.Server.Host/Controllers/AdministrationController.cs +++ b/src/Tgstation.Server.Host/Controllers/AdministrationController.cs @@ -119,7 +119,7 @@ namespace Tgstation.Server.Host.Controllers Logger.LogWarning("Exceeded GitHub rate limit! Exception {0}", exception); var secondsString = Math.Ceiling((exception.Reset - DateTimeOffset.Now).TotalSeconds).ToString(CultureInfo.InvariantCulture); Response.Headers.Add("Retry-After", new StringValues(secondsString)); - return StatusCode(429, new ErrorMessage(ErrorCode.GitHubApiRateLimit)); + return StatusCode(HttpStatusCode.TooManyRequests, new ErrorMessage(ErrorCode.GitHubApiRateLimit)); } /// @@ -149,7 +149,7 @@ namespace Tgstation.Server.Host.Controllers catch (ApiException e) { Logger.LogWarning(OctokitException, e); - return StatusCode((int)HttpStatusCode.FailedDependency); + return StatusCode(HttpStatusCode.FailedDependency); } releases = releases.Where(x => x.TagName.StartsWith(updatesConfiguration.GitTagPrefix, StringComparison.InvariantCulture)); @@ -243,7 +243,7 @@ namespace Tgstation.Server.Host.Controllers catch (ApiException e) { Logger.LogWarning(OctokitException, e); - return StatusCode((int)HttpStatusCode.FailedDependency, new ErrorMessage(ErrorCode.GitHubApiError) + return StatusCode(HttpStatusCode.FailedDependency, new ErrorMessage(ErrorCode.GitHubApiError) { AdditionalData = e.Message }); @@ -313,7 +313,7 @@ namespace Tgstation.Server.Host.Controllers } catch (InvalidOperationException) { - return StatusCode((int)HttpStatusCode.ServiceUnavailable); + return StatusCode(HttpStatusCode.ServiceUnavailable); } } diff --git a/src/Tgstation.Server.Host/Controllers/ApiController.cs b/src/Tgstation.Server.Host/Controllers/ApiController.cs index 4ca169bf08..88309c993a 100644 --- a/src/Tgstation.Server.Host/Controllers/ApiController.cs +++ b/src/Tgstation.Server.Host/Controllers/ApiController.cs @@ -86,19 +86,41 @@ namespace Tgstation.Server.Host.Controllers /// Generic 410 response. /// /// An with . - protected ObjectResult Gone() => StatusCode((int)HttpStatusCode.Gone, new ErrorMessage(ErrorCode.ResourceNotPresent)); + protected ObjectResult Gone() => StatusCode(HttpStatusCode.Gone, new ErrorMessage(ErrorCode.ResourceNotPresent)); /// /// Generic 404 response. /// /// An with . - protected new ObjectResult NotFound() => NotFound(new ErrorMessage(ErrorCode.ResourceNeverPresent)); + protected new NotFoundObjectResult NotFound() => NotFound(new ErrorMessage(ErrorCode.ResourceNeverPresent)); /// /// Generic 501 response. /// /// An with . - protected ObjectResult RequiresPosixSystemIdentity() => StatusCode((int)HttpStatusCode.NotImplemented, new ErrorMessage(ErrorCode.RequiresPosixSystemIdentity)); + protected ObjectResult RequiresPosixSystemIdentity() => StatusCode(HttpStatusCode.NotImplemented, new ErrorMessage(ErrorCode.RequiresPosixSystemIdentity)); + + /// + /// Strongly type calls to . + /// + /// The . + /// A with the given . + protected StatusCodeResult StatusCode(HttpStatusCode statusCode) => StatusCode((int)statusCode); + + /// + /// Strongly type calls to . + /// + /// The . + /// The accompanying payload. + /// A with the given . + protected ObjectResult StatusCode(HttpStatusCode statusCode, object errorMessage) => StatusCode((int)statusCode, errorMessage); + + /// + /// Generic 201 response with a given . + /// + /// The accompanying API payload. + /// A with the given . + protected ObjectResult Created(object payload) => StatusCode((int)HttpStatusCode.Created, payload); /// /// Response for missing/Invalid headers. @@ -123,7 +145,7 @@ namespace Tgstation.Server.Host.Controllers }; if (headersException.MissingOrMalformedHeaders.HasFlag(HeaderTypes.Accept)) - return StatusCode((int)HttpStatusCode.NotAcceptable, errorMessage); + return StatusCode(HttpStatusCode.NotAcceptable, errorMessage); if (headersException.MissingOrMalformedHeaders == HeaderTypes.Authorization) return Unauthorized(errorMessage); @@ -152,7 +174,7 @@ namespace Tgstation.Server.Host.Controllers if (!ApiHeaders.Compatible()) { await StatusCode( - (int)HttpStatusCode.UpgradeRequired, + HttpStatusCode.UpgradeRequired, new ErrorMessage(ErrorCode.ApiMismatch)) .ExecuteResultAsync(context) .ConfigureAwait(false); diff --git a/src/Tgstation.Server.Host/Controllers/ChatController.cs b/src/Tgstation.Server.Host/Controllers/ChatController.cs index 0bfcc923bb..f642156e0f 100644 --- a/src/Tgstation.Server.Host/Controllers/ChatController.cs +++ b/src/Tgstation.Server.Host/Controllers/ChatController.cs @@ -134,7 +134,7 @@ namespace Tgstation.Server.Host.Controllers throw; } - return StatusCode((int)HttpStatusCode.Created, dbModel.ToApi()); + return StatusCode(HttpStatusCode.Created, dbModel.ToApi()); } /// diff --git a/src/Tgstation.Server.Host/Controllers/ConfigurationController.cs b/src/Tgstation.Server.Host/Controllers/ConfigurationController.cs index 54202abac3..37fc92ca1b 100644 --- a/src/Tgstation.Server.Host/Controllers/ConfigurationController.cs +++ b/src/Tgstation.Server.Host/Controllers/ConfigurationController.cs @@ -105,7 +105,7 @@ namespace Tgstation.Server.Host.Controllers newFile.Content = null; - return model.LastReadHash == null ? (IActionResult)StatusCode((int)HttpStatusCode.Created, newFile) : Json(newFile); + return model.LastReadHash == null ? (IActionResult)Created(newFile) : Json(newFile); } catch(IOException e) { @@ -228,7 +228,13 @@ namespace Tgstation.Server.Host.Controllers try { model.IsDirectory = true; - return await instanceManager.GetInstance(Instance).Configuration.CreateDirectory(model.Path, systemIdentity, cancellationToken).ConfigureAwait(false) ? (IActionResult)Json(model) : StatusCode((int)HttpStatusCode.Created, model); + return await instanceManager + .GetInstance(Instance) + .Configuration + .CreateDirectory(model.Path, systemIdentity, cancellationToken) + .ConfigureAwait(false) + ? (IActionResult)Json(model) + : Created(model); } catch (IOException e) { diff --git a/src/Tgstation.Server.Host/Controllers/InstanceController.cs b/src/Tgstation.Server.Host/Controllers/InstanceController.cs index 434e13fe3e..487f8754ab 100644 --- a/src/Tgstation.Server.Host/Controllers/InstanceController.cs +++ b/src/Tgstation.Server.Host/Controllers/InstanceController.cs @@ -311,7 +311,7 @@ namespace Tgstation.Server.Host.Controllers Logger.LogInformation("{0} {1} instance {2}: {3} ({4})", AuthenticationContext.User.Name, attached ? "attached" : "created", newInstance.Name, newInstance.Id, newInstance.Path); var api = newInstance.ToApi(); - return attached ? (IActionResult)Json(api) : StatusCode((int)HttpStatusCode.Created, api); + return attached ? (IActionResult)Json(api) : Created(api); } /// diff --git a/src/Tgstation.Server.Host/Controllers/InstanceUserController.cs b/src/Tgstation.Server.Host/Controllers/InstanceUserController.cs index 403dcdc1e1..dbb3ff8dae 100644 --- a/src/Tgstation.Server.Host/Controllers/InstanceUserController.cs +++ b/src/Tgstation.Server.Host/Controllers/InstanceUserController.cs @@ -4,7 +4,6 @@ using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; -using System.Net; using System.Threading; using System.Threading.Tasks; using Tgstation.Server.Api; @@ -87,7 +86,7 @@ namespace Tgstation.Server.Host.Controllers DatabaseContext.InstanceUsers.Add(dbUser); await DatabaseContext.Save(cancellationToken).ConfigureAwait(false); - return StatusCode((int)HttpStatusCode.Created, dbUser.ToApi()); + return Created(dbUser.ToApi()); } /// diff --git a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs index 4d7302217d..20edd6e076 100644 --- a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs +++ b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs @@ -247,7 +247,7 @@ namespace Tgstation.Server.Host.Controllers api.Reference = model.Reference; api.ActiveJob = job.ToApi(); - return StatusCode((int)HttpStatusCode.Created, api); + return Created(api); } /// @@ -331,7 +331,7 @@ namespace Tgstation.Server.Host.Controllers { // user may have fucked with the repo manually, do what we can await DatabaseContext.Save(cancellationToken).ConfigureAwait(false); - return StatusCode((int)HttpStatusCode.Created, api); + return Created(api); } return Json(api); diff --git a/src/Tgstation.Server.Host/Controllers/UserController.cs b/src/Tgstation.Server.Host/Controllers/UserController.cs index 746fb75757..d8de2ff4e1 100644 --- a/src/Tgstation.Server.Host/Controllers/UserController.cs +++ b/src/Tgstation.Server.Host/Controllers/UserController.cs @@ -171,7 +171,7 @@ namespace Tgstation.Server.Host.Controllers await DatabaseContext.Save(cancellationToken).ConfigureAwait(false); - return StatusCode((int)HttpStatusCode.Created, dbUser.ToApi(true)); + return Created(dbUser.ToApi(true)); } ///