コード例 #1
0
        public async Task <IActionResult> Update([FromBody] ServerUpdateRequest model, CancellationToken cancellationToken)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (model.NewVersion == null)
            {
                return(BadRequest(new ErrorMessageResponse(ErrorCode.ModelValidationFailure)
                {
                    AdditionalData = "newVersion is required!",
                }));
            }

            if (model.NewVersion.Major != assemblyInformationProvider.Version.Major)
            {
                return(BadRequest(new ErrorMessageResponse(ErrorCode.CannotChangeServerSuite)));
            }

            if (!serverControl.WatchdogPresent)
            {
                return(UnprocessableEntity(new ErrorMessageResponse(ErrorCode.MissingHostWatchdog)));
            }

            try
            {
                var updateResult = await serverUpdater.BeginUpdate(model.NewVersion, cancellationToken).ConfigureAwait(false);

                if (updateResult == ServerUpdateResult.ReleaseMissing)
                {
                    return(Gone());
                }

                if (updateResult == ServerUpdateResult.UpdateInProgress)
                {
                    return(BadRequest(new ErrorMessageResponse(ErrorCode.ServerUpdateInProgress)));
                }

                return(Accepted(new ServerUpdateResponse
                {
                    NewVersion = model.NewVersion,
                }));
            }
            catch (RateLimitExceededException e)
            {
                return(RateLimit(e));
            }
            catch (ApiException e)
            {
                Logger.LogWarning(e, OctokitException);
                return(StatusCode(HttpStatusCode.FailedDependency, new ErrorMessageResponse(ErrorCode.RemoteApiError)
                {
                    AdditionalData = e.Message,
                }));
            }
        }
コード例 #2
0
        public async Task <ActionResult> UpdateServer([FromBody] ServerUpdateRequest server)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            await _updateServerUseCase.Handle(new UpdateServerRequest(server.id, server.CreatedAt, server.CreatedBy, server.DeletedAt, server.DeletedBy, server.EndDate,
                                                                      server.IpAddress, server.IsDeleted, server.Name,
                                                                      server.StartDate, server.Status, server.UpdatedAt, server.UpdatedBy), _updateServerPresenter);

            return(Ok("Server has been successfully updated"));
        }
コード例 #3
0
 /// <inheritdoc />
 public Task <ServerUpdateResponse> Update(ServerUpdateRequest updateRequest, CancellationToken cancellationToken) => ApiClient.Update <ServerUpdateRequest, ServerUpdateResponse>(Routes.Administration, updateRequest ?? throw new ArgumentNullException(nameof(updateRequest)), cancellationToken);