mirror of
https://github.com/Radarr/Radarr
synced 2026-04-25 03:52:38 +02:00
Standardize API response codes: PUT returns 200, DELETE returns 204 (#112)
* Initial plan * Fix API response codes: PUT returns 200 Ok, DELETE returns 204 NoContent Co-authored-by: cheir-mneme <176430037+cheir-mneme@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: cheir-mneme <176430037+cheir-mneme@users.noreply.github.com>
This commit is contained in:
parent
b9a03f0ec3
commit
688a0efaa4
12 changed files with 56 additions and 39 deletions
|
|
@ -68,9 +68,9 @@ public ActionResult<AutoTaggingResource> Update([FromBody] AutoTaggingResource r
|
|||
|
||||
Validate(model);
|
||||
|
||||
_autoTaggingService.Update(model);
|
||||
var updated = _autoTaggingService.Update(model);
|
||||
|
||||
return Accepted(model.Id);
|
||||
return Ok(updated.ToResource());
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
|
|
@ -81,9 +81,10 @@ public List<AutoTaggingResource> GetAll()
|
|||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void DeleteFormat(int id)
|
||||
public ActionResult DeleteFormat(int id)
|
||||
{
|
||||
_autoTaggingService.Delete(id);
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpGet("schema")]
|
||||
|
|
|
|||
|
|
@ -63,18 +63,19 @@ public List<BlocklistResource> GetMovieBlocklist(int movieId)
|
|||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void DeleteBlocklist(int id)
|
||||
public ActionResult DeleteBlocklist(int id)
|
||||
{
|
||||
_blocklistService.Delete(id);
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpDelete("bulk")]
|
||||
[Produces("application/json")]
|
||||
public object Remove([FromBody] BlocklistBulkResource resource)
|
||||
public ActionResult Remove([FromBody] BlocklistBulkResource resource)
|
||||
{
|
||||
_blocklistService.Delete(resource.Ids);
|
||||
|
||||
return new { };
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,14 +41,15 @@ public ActionResult<CustomFilterResource> AddCustomFilter([FromBody] CustomFilte
|
|||
[Consumes("application/json")]
|
||||
public ActionResult<CustomFilterResource> UpdateCustomFilter([FromBody] CustomFilterResource resource)
|
||||
{
|
||||
_customFilterService.Update(resource.ToModel());
|
||||
return Accepted(resource.Id);
|
||||
var updated = _customFilterService.Update(resource.ToModel());
|
||||
return Ok(updated.ToResource());
|
||||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void DeleteCustomResource(int id)
|
||||
public ActionResult DeleteCustomResource(int id)
|
||||
{
|
||||
_customFilterService.Delete(id);
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,9 +72,9 @@ public ActionResult<CustomFormatResource> Update([FromBody] CustomFormatResource
|
|||
|
||||
Validate(model);
|
||||
|
||||
_formatService.Update(model);
|
||||
var updated = _formatService.Update(model);
|
||||
|
||||
return Accepted(model.Id);
|
||||
return Ok(updated.ToResource(true));
|
||||
}
|
||||
|
||||
[HttpPut("bulk")]
|
||||
|
|
@ -96,22 +96,23 @@ public virtual ActionResult<CustomFormatResource> Update([FromBody] CustomFormat
|
|||
|
||||
_formatService.Update(customFormats);
|
||||
|
||||
return Accepted(customFormats.ConvertAll(cf => cf.ToResource(true)));
|
||||
return Ok(customFormats.ConvertAll(cf => cf.ToResource(true)));
|
||||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void DeleteFormat(int id)
|
||||
public ActionResult DeleteFormat(int id)
|
||||
{
|
||||
_formatService.Delete(id);
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpDelete("bulk")]
|
||||
[Consumes("application/json")]
|
||||
public virtual object DeleteFormats([FromBody] CustomFormatBulkResource resource)
|
||||
public virtual ActionResult DeleteFormats([FromBody] CustomFormatBulkResource resource)
|
||||
{
|
||||
_formatService.Delete(resource.Ids.ToList());
|
||||
|
||||
return new { };
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpGet("schema")]
|
||||
|
|
|
|||
|
|
@ -101,8 +101,9 @@ public ActionResult<MovieFileResource> SetMovieFile([FromBody] MovieFileResource
|
|||
movieFile.SceneName = movieFileResource.SceneName;
|
||||
}
|
||||
|
||||
_mediaFileService.Update(movieFile);
|
||||
return Accepted(movieFile.Id);
|
||||
var updatedFile = _mediaFileService.Update(movieFile);
|
||||
var movie = _movieService.GetMovie(updatedFile.MovieId);
|
||||
return Ok(updatedFile.ToResource(movie, _upgradableSpecification, _formatCalculator));
|
||||
}
|
||||
|
||||
[Obsolete("Use bulk endpoint instead")]
|
||||
|
|
@ -155,11 +156,11 @@ public object SetMovieFile([FromBody] MovieFileListResource resource)
|
|||
|
||||
var movie = _movieService.GetMovie(movieFiles.First().MovieId);
|
||||
|
||||
return Accepted(movieFiles.ConvertAll(f => f.ToResource(movie, _upgradableSpecification, _formatCalculator)));
|
||||
return Ok(movieFiles.ConvertAll(f => f.ToResource(movie, _upgradableSpecification, _formatCalculator)));
|
||||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void DeleteMovieFile(int id)
|
||||
public ActionResult DeleteMovieFile(int id)
|
||||
{
|
||||
var movieFile = _mediaFileService.GetMovie(id);
|
||||
|
||||
|
|
@ -171,11 +172,13 @@ public void DeleteMovieFile(int id)
|
|||
var movie = _movieService.GetMovie(movieFile.MovieId);
|
||||
|
||||
_mediaFileDeletionService.DeleteMovieFile(movie, movieFile);
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpDelete("bulk")]
|
||||
[Consumes("application/json")]
|
||||
public object DeleteMovieFiles([FromBody] MovieFileListResource resource)
|
||||
public ActionResult DeleteMovieFiles([FromBody] MovieFileListResource resource)
|
||||
{
|
||||
if (!resource.MovieFileIds.Any())
|
||||
{
|
||||
|
|
@ -186,7 +189,7 @@ public object DeleteMovieFiles([FromBody] MovieFileListResource resource)
|
|||
|
||||
if (movieFiles.Count == 0)
|
||||
{
|
||||
return new { };
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
var movie = _movieService.GetMovie(movieFiles.First().MovieId);
|
||||
|
|
@ -196,7 +199,7 @@ public object DeleteMovieFiles([FromBody] MovieFileListResource resource)
|
|||
_mediaFileDeletionService.DeleteMovieFile(movie, movieFile);
|
||||
}
|
||||
|
||||
return new { };
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpPut("bulk")]
|
||||
|
|
|
|||
|
|
@ -271,15 +271,18 @@ public ActionResult<MovieResource> UpdateMovie([FromBody] MovieResource moviesRe
|
|||
|
||||
var updatedMovie = _moviesService.UpdateMovie(model);
|
||||
|
||||
BroadcastResourceChange(ModelAction.Updated, MapToResource(updatedMovie));
|
||||
var resource = MapToResource(updatedMovie);
|
||||
|
||||
return Ok(moviesResource);
|
||||
BroadcastResourceChange(ModelAction.Updated, resource);
|
||||
|
||||
return Ok(resource);
|
||||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void DeleteMovie(int id, bool deleteFiles = false, bool addImportExclusion = false)
|
||||
public ActionResult DeleteMovie(int id, bool deleteFiles = false, bool addImportExclusion = false)
|
||||
{
|
||||
_moviesService.DeleteMovie(id, deleteFiles, addImportExclusion);
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
private void MapCoversToLocal(MovieResource movie)
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ public IActionResult SaveAll([FromBody] MovieEditorResource resource)
|
|||
moviesResources.Add(movieResource);
|
||||
}
|
||||
|
||||
return Accepted(moviesResources);
|
||||
return Ok(moviesResources);
|
||||
}
|
||||
|
||||
[HttpDelete]
|
||||
|
|
|
|||
|
|
@ -118,10 +118,10 @@ public ActionResult<TProviderResource> UpdateProvider([FromRoute] int id, [FromB
|
|||
|
||||
if (hasDefinitionChanged)
|
||||
{
|
||||
_providerFactory.Update(providerDefinition);
|
||||
providerDefinition = _providerFactory.Update(providerDefinition);
|
||||
}
|
||||
|
||||
return Accepted(existingDefinition.Id);
|
||||
return Ok(_resourceMapper.ToResource(providerDefinition));
|
||||
}
|
||||
|
||||
[HttpPut("bulk")]
|
||||
|
|
@ -162,7 +162,7 @@ public virtual ActionResult<TProviderResource> UpdateProvider([FromBody] TBulkPr
|
|||
|
||||
_bulkResourceMapper.UpdateModel(providerResource, definitionsToUpdate);
|
||||
|
||||
return Accepted(_providerFactory.Update(definitionsToUpdate).Select(x => _resourceMapper.ToResource(x)));
|
||||
return Ok(_providerFactory.Update(definitionsToUpdate).Select(x => _resourceMapper.ToResource(x)));
|
||||
}
|
||||
|
||||
private TProviderDefinition GetDefinition(TProviderResource providerResource, TProviderDefinition existingDefinition, bool validate, bool includeWarnings, bool forceValidate)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ protected override QueueResource GetResourceById(int id)
|
|||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void RemoveAction(int id, bool removeFromClient = true, bool blocklist = false, bool skipRedownload = false, bool changeCategory = false)
|
||||
public ActionResult RemoveAction(int id, bool removeFromClient = true, bool blocklist = false, bool skipRedownload = false, bool changeCategory = false)
|
||||
{
|
||||
var pendingRelease = _pendingReleaseService.FindPendingQueueItem(id);
|
||||
|
||||
|
|
@ -79,7 +79,7 @@ public void RemoveAction(int id, bool removeFromClient = true, bool blocklist =
|
|||
{
|
||||
Remove(pendingRelease, blocklist);
|
||||
|
||||
return;
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
var trackedDownload = GetTrackedDownload(id);
|
||||
|
|
@ -91,10 +91,12 @@ public void RemoveAction(int id, bool removeFromClient = true, bool blocklist =
|
|||
|
||||
Remove(trackedDownload, removeFromClient, blocklist, skipRedownload, changeCategory);
|
||||
_trackedDownloadService.StopTracking(trackedDownload.DownloadItem.DownloadId);
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpDelete("bulk")]
|
||||
public object RemoveMany([FromBody] QueueBulkResource resource, [FromQuery] bool removeFromClient = true, [FromQuery] bool blocklist = false, [FromQuery] bool skipRedownload = false, [FromQuery] bool changeCategory = false)
|
||||
public ActionResult RemoveMany([FromBody] QueueBulkResource resource, [FromQuery] bool removeFromClient = true, [FromQuery] bool blocklist = false, [FromQuery] bool skipRedownload = false, [FromQuery] bool changeCategory = false)
|
||||
{
|
||||
var trackedDownloadIds = new List<string>();
|
||||
var pendingToRemove = new List<NzbDrone.Core.Queue.Queue>();
|
||||
|
|
@ -131,7 +133,7 @@ public object RemoveMany([FromBody] QueueBulkResource resource, [FromQuery] bool
|
|||
|
||||
_trackedDownloadService.StopTracking(trackedDownloadIds);
|
||||
|
||||
return new { };
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
|
|
|
|||
|
|
@ -67,9 +67,10 @@ public List<RemotePathMappingResource> GetMappings()
|
|||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void DeleteMapping(int id)
|
||||
public ActionResult DeleteMapping(int id)
|
||||
{
|
||||
_remotePathMappingService.Remove(id);
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[RestPutById]
|
||||
|
|
@ -77,7 +78,9 @@ public ActionResult<RemotePathMappingResource> UpdateMapping([FromBody] RemotePa
|
|||
{
|
||||
var mapping = resource.ToModel();
|
||||
|
||||
return Accepted(_remotePathMappingService.Update(mapping));
|
||||
var updated = _remotePathMappingService.Update(mapping);
|
||||
|
||||
return Ok(updated.ToResource());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,9 +64,10 @@ public List<RootFolderResource> GetRootFolders()
|
|||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void DeleteFolder(int id)
|
||||
public ActionResult DeleteFolder(int id)
|
||||
{
|
||||
_rootFolderService.Remove(id);
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,14 +54,15 @@ public ActionResult<TagResource> Create([FromBody] TagResource resource)
|
|||
[Consumes("application/json")]
|
||||
public ActionResult<TagResource> Update([FromBody] TagResource resource)
|
||||
{
|
||||
_tagService.Update(resource.ToModel());
|
||||
return Accepted(resource.Id);
|
||||
var updatedTag = _tagService.Update(resource.ToModel());
|
||||
return Ok(updatedTag.ToResource());
|
||||
}
|
||||
|
||||
[RestDeleteById]
|
||||
public void DeleteTag(int id)
|
||||
public ActionResult DeleteTag(int id)
|
||||
{
|
||||
_tagService.Delete(id);
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
|
|
|
|||
Loading…
Reference in a new issue