public async Task <ActionResult <MockupRequest> > Put([FromBody] MockupRequest request) { var logId = Guid.NewGuid(); Program.Logger.Info($"[{logId}] Executing RequestController.Put({request})"); if (request.Id > 0) { Program.Logger.Error($"[{logId}] The new request definition does not have an empty id."); return(StatusCode(409, "The new request definition does not have an empty id.")); } if (DataService.RequestExists(request.HttpMethod, request.Route, request.Query, request.Body, logId)) { Program.Logger.Error($"[{logId}] A request with the given values already exists."); return(BadRequest("A request with the given values already exists.")); } if (request.Body == null) { request.Body = ""; } if (request.Query == null) { request.Query = ""; } var retVal = DataService.AddRequest(request, logId); Program.Logger.Info($"[{logId}] Successfully created request with id #{retVal.Id}."); return(Ok(retVal)); }
public async Task <ActionResult <MockupRequest> > Patch(int id, [FromBody] MockupRequest request) { if (request.Id < 1) { return(StatusCode(409, "The request definition has an empty id.")); } if (!request.Id.Equals(id)) { return(StatusCode(406, "Ids mismatch.")); } if (!DataService.RequestExistsForId(request.Id)) { return(NotFound($"No request definition found with id #{id}.")); } var existingRequest = DataService.GetRequestById(id); if (!existingRequest.HttpMethod.Equals(request.HttpMethod, StringComparison.InvariantCultureIgnoreCase)) { DataService.SetRequestMethod(id, request.HttpMethod); } if (!existingRequest.Query.Equals(request.Query, StringComparison.InvariantCultureIgnoreCase)) { DataService.SetRequestQuery(id, request.Query); } if (!existingRequest.Body.Equals(request.Body, StringComparison.InvariantCultureIgnoreCase)) { DataService.SetRequestBody(id, request.Body); } if (existingRequest.ResponseId != request.ResponseId) { DataService.SetRequestResponseId(id, request.ResponseId); } return(Ok(request)); }
/// <summary> /// Converts a <see cref="MockupRequest"/> to a <see cref="RequestDefinition"/>. /// </summary> /// <param name="request">The request to convert.</param> /// <returns>The converted instance.</returns> public static RequestDefinition ToRequestDefinition(this MockupRequest request) { if (request.HttpMethod.ToMethodEnum() == HttpMethodEnum.Unknown) { throw new WebApiMockException($"The HTTP method '{request.HttpMethod}' is unknown.", 30); } if (request.Id == 0) { return(new RequestDefinition { Id = 0, Method = request.HttpMethod.ToMethodEnum(), Route = request.Route, Body = request.Body, Query = request.Query, MockupResponseId = 0 }); } using var ctx = new DataContext(); if (!ctx.Requests.Any(r => r.Id.Equals(request.Id))) { return(null); } var retVal = ctx.Requests.Single(r => r.Id.Equals(request.Id)); return(retVal); }
/// <summary> /// Adds a new request to the database. /// </summary> /// <param name="request">The request to add. Its id must be 0 (zero).</param> /// <param name="transactionId">An (optional) id for logging purpose.</param> /// <returns>The added request with an updated id.</returns> public static MockupRequest AddRequest(MockupRequest request, Guid?transactionId = null) { var logId = Guid.Empty; var method = request.HttpMethod.ToMethodEnum(); bool exists; RequestDefinition newData; if (transactionId.HasValue) { logId = transactionId.Value; } if (logId.Equals(Guid.Empty)) { logId = Guid.NewGuid(); } if (method == HttpMethodEnum.Unknown) { Program.Logger.Error($"Unknown HTTP method '{request.HttpMethod}'."); throw new WebApiMockException($"Unknown HTTP method '{request.HttpMethod}'.", 16); } if (request.ResponseId == 0) { Program.Logger.Error("No response set for the new request."); throw new WebApiMockException("No response set for the new request.", 17); } exists = ResponseExistsForId(request.ResponseId); if (!exists) { Program.Logger.Error($"No response with id #{request.ResponseId} found."); throw new WebApiMockException($"No response with id #{request.ResponseId} found.", 18); } if (request.Id != 0) { Program.Logger.Error("The id for a new request must be 0."); throw new WebApiMockException("The id for a new request must be 0.", 14); } if (RequestExists(request.HttpMethod, request.Route, request.Query, request.Body, logId)) { Program.Logger.Error("The request already exists."); throw new WebApiMockException("The request already exists.", 15); } newData = new RequestDefinition { Method = request.HttpMethod.ToMethodEnum(), Body = request.Body, Query = request.Query, Route = request.Route, MockupResponseId = request.ResponseId }; using var ctx = new DataContext(); ctx.Requests.Add(newData); ctx.SaveChanges(true); Program.Logger.Info($"[{logId}] Successfully created request #{newData.Id} ({request.Route}) [{request.HttpMethod}]."); return(newData.ToMockupRequest()); }