From c0b354039d5eef06674b34096b229df4866a13e8 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Mon, 29 Apr 2024 01:19:25 +0300 Subject: [PATCH] Parameter binding for API requests --- src/Radarr.Api.V3/AutoTagging/AutoTaggingController.cs | 4 ++-- src/Radarr.Api.V3/Collections/CollectionController.cs | 6 ++++-- src/Radarr.Api.V3/Commands/CommandController.cs | 4 +++- src/Radarr.Api.V3/Config/ConfigController.cs | 2 +- src/Radarr.Api.V3/Config/HostConfigController.cs | 2 +- src/Radarr.Api.V3/Config/NamingConfigController.cs | 2 +- src/Radarr.Api.V3/Config/UiConfigController.cs | 2 +- src/Radarr.Api.V3/CustomFilters/CustomFilterController.cs | 6 ++++-- src/Radarr.Api.V3/CustomFormats/CustomFormatController.cs | 4 ++-- src/Radarr.Api.V3/ImportLists/ImportExclusionsController.cs | 6 ++++-- src/Radarr.Api.V3/Indexers/ReleaseController.cs | 2 +- src/Radarr.Api.V3/Indexers/ReleasePushController.cs | 2 +- src/Radarr.Api.V3/MovieFiles/MovieFileController.cs | 2 +- src/Radarr.Api.V3/Movies/MovieController.cs | 6 ++++-- src/Radarr.Api.V3/Profiles/Delay/DelayProfileController.cs | 6 ++++-- .../Profiles/Quality/QualityProfileController.cs | 6 ++++-- .../Profiles/Release/ReleaseProfileController.cs | 4 ++-- src/Radarr.Api.V3/ProviderControllerBase.cs | 2 +- src/Radarr.Api.V3/Qualities/QualityDefinitionController.cs | 2 +- src/Radarr.Api.V3/Queue/QueueActionController.cs | 2 +- .../RemotePathMappings/RemotePathMappingController.cs | 5 +++-- src/Radarr.Api.V3/RootFolders/RootFolderController.cs | 3 ++- src/Radarr.Api.V3/System/Backup/BackupController.cs | 2 +- src/Radarr.Api.V3/Tags/TagController.cs | 6 ++++-- 24 files changed, 53 insertions(+), 35 deletions(-) diff --git a/src/Radarr.Api.V3/AutoTagging/AutoTaggingController.cs b/src/Radarr.Api.V3/AutoTagging/AutoTaggingController.cs index 981382c0a..ca112e41d 100644 --- a/src/Radarr.Api.V3/AutoTagging/AutoTaggingController.cs +++ b/src/Radarr.Api.V3/AutoTagging/AutoTaggingController.cs @@ -51,7 +51,7 @@ namespace Radarr.Api.V3.AutoTagging [RestPostById] [Consumes("application/json")] - public ActionResult Create(AutoTaggingResource autoTagResource) + public ActionResult Create([FromBody] AutoTaggingResource autoTagResource) { var model = autoTagResource.ToModel(_specifications); @@ -62,7 +62,7 @@ namespace Radarr.Api.V3.AutoTagging [RestPutById] [Consumes("application/json")] - public ActionResult Update(AutoTaggingResource resource) + public ActionResult Update([FromBody] AutoTaggingResource resource) { var model = resource.ToModel(_specifications); diff --git a/src/Radarr.Api.V3/Collections/CollectionController.cs b/src/Radarr.Api.V3/Collections/CollectionController.cs index 8d137dea8..240c187ff 100644 --- a/src/Radarr.Api.V3/Collections/CollectionController.cs +++ b/src/Radarr.Api.V3/Collections/CollectionController.cs @@ -84,7 +84,8 @@ namespace Radarr.Api.V3.Collections } [RestPutById] - public ActionResult UpdateCollection(CollectionResource collectionResource) + [Consumes("application/json")] + public ActionResult UpdateCollection([FromBody] CollectionResource collectionResource) { var collection = _collectionService.GetCollection(collectionResource.Id); @@ -96,7 +97,8 @@ namespace Radarr.Api.V3.Collections } [HttpPut] - public ActionResult UpdateCollections(CollectionUpdateResource resource) + [Consumes("application/json")] + public ActionResult UpdateCollections([FromBody] CollectionUpdateResource resource) { var collectionsToUpdate = _collectionService.GetCollections(resource.CollectionIds).ToList(); diff --git a/src/Radarr.Api.V3/Commands/CommandController.cs b/src/Radarr.Api.V3/Commands/CommandController.cs index 0ddf438c5..744f39c73 100644 --- a/src/Radarr.Api.V3/Commands/CommandController.cs +++ b/src/Radarr.Api.V3/Commands/CommandController.cs @@ -49,7 +49,9 @@ namespace Radarr.Api.V3.Commands } [RestPostById] - public ActionResult StartCommand(CommandResource commandResource) + [Consumes("application/json")] + [Produces("application/json")] + public ActionResult StartCommand([FromBody] CommandResource commandResource) { var commandType = _knownTypes.GetImplementations(typeof(Command)) diff --git a/src/Radarr.Api.V3/Config/ConfigController.cs b/src/Radarr.Api.V3/Config/ConfigController.cs index 38aae64c9..803f04a7b 100644 --- a/src/Radarr.Api.V3/Config/ConfigController.cs +++ b/src/Radarr.Api.V3/Config/ConfigController.cs @@ -34,7 +34,7 @@ namespace Radarr.Api.V3.Config [RestPutById] [Consumes("application/json")] - public virtual ActionResult SaveConfig(TResource resource) + public virtual ActionResult SaveConfig([FromBody] TResource resource) { var dictionary = resource.GetType() .GetProperties(BindingFlags.Instance | BindingFlags.Public) diff --git a/src/Radarr.Api.V3/Config/HostConfigController.cs b/src/Radarr.Api.V3/Config/HostConfigController.cs index 086180b86..5efaa77c3 100644 --- a/src/Radarr.Api.V3/Config/HostConfigController.cs +++ b/src/Radarr.Api.V3/Config/HostConfigController.cs @@ -122,7 +122,7 @@ namespace Radarr.Api.V3.Config } [RestPutById] - public ActionResult SaveHostConfig(HostConfigResource resource) + public ActionResult SaveHostConfig([FromBody] HostConfigResource resource) { var dictionary = resource.GetType() .GetProperties(BindingFlags.Instance | BindingFlags.Public) diff --git a/src/Radarr.Api.V3/Config/NamingConfigController.cs b/src/Radarr.Api.V3/Config/NamingConfigController.cs index fd9f406c2..7ca6cf96d 100644 --- a/src/Radarr.Api.V3/Config/NamingConfigController.cs +++ b/src/Radarr.Api.V3/Config/NamingConfigController.cs @@ -48,7 +48,7 @@ namespace Radarr.Api.V3.Config } [RestPutById] - public ActionResult UpdateNamingConfig(NamingConfigResource resource) + public ActionResult UpdateNamingConfig([FromBody] NamingConfigResource resource) { var nameSpec = resource.ToModel(); ValidateFormatResult(nameSpec); diff --git a/src/Radarr.Api.V3/Config/UiConfigController.cs b/src/Radarr.Api.V3/Config/UiConfigController.cs index fb6310c73..e45e96758 100644 --- a/src/Radarr.Api.V3/Config/UiConfigController.cs +++ b/src/Radarr.Api.V3/Config/UiConfigController.cs @@ -33,7 +33,7 @@ namespace Radarr.Api.V3.Config } [RestPutById] - public override ActionResult SaveConfig(UiConfigResource resource) + public override ActionResult SaveConfig([FromBody] UiConfigResource resource) { var dictionary = resource.GetType() .GetProperties(BindingFlags.Instance | BindingFlags.Public) diff --git a/src/Radarr.Api.V3/CustomFilters/CustomFilterController.cs b/src/Radarr.Api.V3/CustomFilters/CustomFilterController.cs index 2fba4daa1..c6c64b56e 100644 --- a/src/Radarr.Api.V3/CustomFilters/CustomFilterController.cs +++ b/src/Radarr.Api.V3/CustomFilters/CustomFilterController.cs @@ -29,7 +29,8 @@ namespace Radarr.Api.V3.CustomFilters } [RestPostById] - public ActionResult AddCustomFilter(CustomFilterResource resource) + [Consumes("application/json")] + public ActionResult AddCustomFilter([FromBody] CustomFilterResource resource) { var customFilter = _customFilterService.Add(resource.ToModel()); @@ -37,7 +38,8 @@ namespace Radarr.Api.V3.CustomFilters } [RestPutById] - public ActionResult UpdateCustomFilter(CustomFilterResource resource) + [Consumes("application/json")] + public ActionResult UpdateCustomFilter([FromBody] CustomFilterResource resource) { _customFilterService.Update(resource.ToModel()); return Accepted(resource.Id); diff --git a/src/Radarr.Api.V3/CustomFormats/CustomFormatController.cs b/src/Radarr.Api.V3/CustomFormats/CustomFormatController.cs index cad3ebbf1..16b5974d4 100644 --- a/src/Radarr.Api.V3/CustomFormats/CustomFormatController.cs +++ b/src/Radarr.Api.V3/CustomFormats/CustomFormatController.cs @@ -48,7 +48,7 @@ namespace Radarr.Api.V3.CustomFormats [RestPostById] [Consumes("application/json")] - public ActionResult Create(CustomFormatResource customFormatResource) + public ActionResult Create([FromBody] CustomFormatResource customFormatResource) { var model = customFormatResource.ToModel(_specifications); @@ -59,7 +59,7 @@ namespace Radarr.Api.V3.CustomFormats [RestPutById] [Consumes("application/json")] - public ActionResult Update(CustomFormatResource resource) + public ActionResult Update([FromBody] CustomFormatResource resource) { var model = resource.ToModel(_specifications); diff --git a/src/Radarr.Api.V3/ImportLists/ImportExclusionsController.cs b/src/Radarr.Api.V3/ImportLists/ImportExclusionsController.cs index 18c3b8352..e36cb6cdb 100644 --- a/src/Radarr.Api.V3/ImportLists/ImportExclusionsController.cs +++ b/src/Radarr.Api.V3/ImportLists/ImportExclusionsController.cs @@ -34,14 +34,16 @@ namespace Radarr.Api.V3.ImportLists } [RestPutById] - public ActionResult UpdateExclusion(ImportExclusionsResource exclusionResource) + [Consumes("application/json")] + public ActionResult UpdateExclusion([FromBody] ImportExclusionsResource exclusionResource) { var model = exclusionResource.ToModel(); return Accepted(_exclusionService.Update(model)); } [RestPostById] - public ActionResult AddExclusion(ImportExclusionsResource exclusionResource) + [Consumes("application/json")] + public ActionResult AddExclusion([FromBody] ImportExclusionsResource exclusionResource) { var model = exclusionResource.ToModel(); diff --git a/src/Radarr.Api.V3/Indexers/ReleaseController.cs b/src/Radarr.Api.V3/Indexers/ReleaseController.cs index 8ce628184..3ef26ae4f 100644 --- a/src/Radarr.Api.V3/Indexers/ReleaseController.cs +++ b/src/Radarr.Api.V3/Indexers/ReleaseController.cs @@ -61,7 +61,7 @@ namespace Radarr.Api.V3.Indexers [HttpPost] [Consumes("application/json")] - public async Task DownloadRelease(ReleaseResource release) + public async Task DownloadRelease([FromBody] ReleaseResource release) { var remoteMovie = _remoteMovieCache.Find(GetCacheKey(release)); diff --git a/src/Radarr.Api.V3/Indexers/ReleasePushController.cs b/src/Radarr.Api.V3/Indexers/ReleasePushController.cs index 97bbd2798..2dc1bd2af 100644 --- a/src/Radarr.Api.V3/Indexers/ReleasePushController.cs +++ b/src/Radarr.Api.V3/Indexers/ReleasePushController.cs @@ -49,7 +49,7 @@ namespace Radarr.Api.V3.Indexers [HttpPost] [Consumes("application/json")] - public ActionResult> Create(ReleaseResource release) + public ActionResult> Create([FromBody] ReleaseResource release) { _logger.Info("Release pushed: {0} - {1}", release.Title, release.DownloadUrl ?? release.MagnetUrl); diff --git a/src/Radarr.Api.V3/MovieFiles/MovieFileController.cs b/src/Radarr.Api.V3/MovieFiles/MovieFileController.cs index ad3acede5..c3c56d2b5 100644 --- a/src/Radarr.Api.V3/MovieFiles/MovieFileController.cs +++ b/src/Radarr.Api.V3/MovieFiles/MovieFileController.cs @@ -82,7 +82,7 @@ namespace Radarr.Api.V3.MovieFiles [RestPutById] [Consumes("application/json")] - public ActionResult SetMovieFile(MovieFileResource movieFileResource) + public ActionResult SetMovieFile([FromBody] MovieFileResource movieFileResource) { var movieFile = _mediaFileService.GetMovie(movieFileResource.Id); movieFile.IndexerFlags = (IndexerFlags)movieFileResource.IndexerFlags; diff --git a/src/Radarr.Api.V3/Movies/MovieController.cs b/src/Radarr.Api.V3/Movies/MovieController.cs index f8aff7822..8905e5eea 100644 --- a/src/Radarr.Api.V3/Movies/MovieController.cs +++ b/src/Radarr.Api.V3/Movies/MovieController.cs @@ -235,7 +235,8 @@ namespace Radarr.Api.V3.Movies } [RestPostById] - public ActionResult AddMovie(MovieResource moviesResource) + [Consumes("application/json")] + public ActionResult AddMovie([FromBody] MovieResource moviesResource) { var movie = _addMovieService.AddMovie(moviesResource.ToModel()); @@ -243,7 +244,8 @@ namespace Radarr.Api.V3.Movies } [RestPutById] - public ActionResult UpdateMovie(MovieResource moviesResource, bool moveFiles = false) + [Consumes("application/json")] + public ActionResult UpdateMovie([FromBody] MovieResource moviesResource, [FromQuery] bool moveFiles = false) { var movie = _moviesService.GetMovie(moviesResource.Id); diff --git a/src/Radarr.Api.V3/Profiles/Delay/DelayProfileController.cs b/src/Radarr.Api.V3/Profiles/Delay/DelayProfileController.cs index cd472e1d7..7f07b1f92 100644 --- a/src/Radarr.Api.V3/Profiles/Delay/DelayProfileController.cs +++ b/src/Radarr.Api.V3/Profiles/Delay/DelayProfileController.cs @@ -34,7 +34,8 @@ namespace Radarr.Api.V3.Profiles.Delay } [RestPostById] - public ActionResult Create(DelayProfileResource resource) + [Consumes("application/json")] + public ActionResult Create([FromBody] DelayProfileResource resource) { var model = resource.ToModel(); model = _delayProfileService.Add(model); @@ -54,7 +55,8 @@ namespace Radarr.Api.V3.Profiles.Delay } [RestPutById] - public ActionResult Update(DelayProfileResource resource) + [Consumes("application/json")] + public ActionResult Update([FromBody] DelayProfileResource resource) { var model = resource.ToModel(); _delayProfileService.Update(model); diff --git a/src/Radarr.Api.V3/Profiles/Quality/QualityProfileController.cs b/src/Radarr.Api.V3/Profiles/Quality/QualityProfileController.cs index b7ab9122a..5b924849c 100644 --- a/src/Radarr.Api.V3/Profiles/Quality/QualityProfileController.cs +++ b/src/Radarr.Api.V3/Profiles/Quality/QualityProfileController.cs @@ -47,7 +47,8 @@ namespace Radarr.Api.V3.Profiles.Quality } [RestPostById] - public ActionResult Create(QualityProfileResource resource) + [Consumes("application/json")] + public ActionResult Create([FromBody] QualityProfileResource resource) { var model = resource.ToModel(); model = _qualityProfileService.Add(model); @@ -61,7 +62,8 @@ namespace Radarr.Api.V3.Profiles.Quality } [RestPutById] - public ActionResult Update(QualityProfileResource resource) + [Consumes("application/json")] + public ActionResult Update([FromBody] QualityProfileResource resource) { var model = resource.ToModel(); diff --git a/src/Radarr.Api.V3/Profiles/Release/ReleaseProfileController.cs b/src/Radarr.Api.V3/Profiles/Release/ReleaseProfileController.cs index cbdbfbb8d..6a54fe620 100644 --- a/src/Radarr.Api.V3/Profiles/Release/ReleaseProfileController.cs +++ b/src/Radarr.Api.V3/Profiles/Release/ReleaseProfileController.cs @@ -36,7 +36,7 @@ namespace Radarr.Api.V3.Profiles.Release } [RestPostById] - public ActionResult Create(ReleaseProfileResource resource) + public ActionResult Create([FromBody] ReleaseProfileResource resource) { var model = resource.ToModel(); model = _profileService.Add(model); @@ -50,7 +50,7 @@ namespace Radarr.Api.V3.Profiles.Release } [RestPutById] - public ActionResult Update(ReleaseProfileResource resource) + public ActionResult Update([FromBody] ReleaseProfileResource resource) { var model = resource.ToModel(); diff --git a/src/Radarr.Api.V3/ProviderControllerBase.cs b/src/Radarr.Api.V3/ProviderControllerBase.cs index 9679f3ba8..aa4d139b3 100644 --- a/src/Radarr.Api.V3/ProviderControllerBase.cs +++ b/src/Radarr.Api.V3/ProviderControllerBase.cs @@ -245,7 +245,7 @@ namespace Radarr.Api.V3 [HttpPost("action/{name}")] [Consumes("application/json")] [Produces("application/json")] - public IActionResult RequestAction(string name, [FromBody] TProviderResource providerResource) + public IActionResult RequestAction([FromRoute] string name, [FromBody] TProviderResource providerResource) { var existingDefinition = providerResource.Id > 0 ? _providerFactory.Find(providerResource.Id) : null; var providerDefinition = GetDefinition(providerResource, existingDefinition, false, false, false); diff --git a/src/Radarr.Api.V3/Qualities/QualityDefinitionController.cs b/src/Radarr.Api.V3/Qualities/QualityDefinitionController.cs index a662f9f4f..7e6cbeef4 100644 --- a/src/Radarr.Api.V3/Qualities/QualityDefinitionController.cs +++ b/src/Radarr.Api.V3/Qualities/QualityDefinitionController.cs @@ -23,7 +23,7 @@ namespace Radarr.Api.V3.Qualities } [RestPutById] - public ActionResult Update(QualityDefinitionResource resource) + public ActionResult Update([FromBody] QualityDefinitionResource resource) { var model = resource.ToModel(); _qualityDefinitionService.Update(model); diff --git a/src/Radarr.Api.V3/Queue/QueueActionController.cs b/src/Radarr.Api.V3/Queue/QueueActionController.cs index 7f987faac..648cc6a8c 100644 --- a/src/Radarr.Api.V3/Queue/QueueActionController.cs +++ b/src/Radarr.Api.V3/Queue/QueueActionController.cs @@ -21,7 +21,7 @@ namespace Radarr.Api.V3.Queue } [HttpPost("grab/{id:int}")] - public async Task Grab(int id) + public async Task Grab([FromRoute] int id) { var pendingRelease = _pendingReleaseService.FindPendingQueueItem(id); diff --git a/src/Radarr.Api.V3/RemotePathMappings/RemotePathMappingController.cs b/src/Radarr.Api.V3/RemotePathMappings/RemotePathMappingController.cs index 848138524..6d05c174b 100644 --- a/src/Radarr.Api.V3/RemotePathMappings/RemotePathMappingController.cs +++ b/src/Radarr.Api.V3/RemotePathMappings/RemotePathMappingController.cs @@ -40,7 +40,8 @@ namespace Radarr.Api.V3.RemotePathMappings } [RestPostById] - public ActionResult CreateMapping(RemotePathMappingResource resource) + [Consumes("application/json")] + public ActionResult CreateMapping([FromBody] RemotePathMappingResource resource) { var model = resource.ToModel(); @@ -60,7 +61,7 @@ namespace Radarr.Api.V3.RemotePathMappings } [RestPutById] - public ActionResult UpdateMapping(RemotePathMappingResource resource) + public ActionResult UpdateMapping([FromBody] RemotePathMappingResource resource) { var mapping = resource.ToModel(); diff --git a/src/Radarr.Api.V3/RootFolders/RootFolderController.cs b/src/Radarr.Api.V3/RootFolders/RootFolderController.cs index 0912b6e0b..7fb06a295 100644 --- a/src/Radarr.Api.V3/RootFolders/RootFolderController.cs +++ b/src/Radarr.Api.V3/RootFolders/RootFolderController.cs @@ -49,7 +49,8 @@ namespace Radarr.Api.V3.RootFolders } [RestPostById] - public ActionResult CreateRootFolder(RootFolderResource rootFolderResource) + [Consumes("application/json")] + public ActionResult CreateRootFolder([FromBody] RootFolderResource rootFolderResource) { var model = rootFolderResource.ToModel(); diff --git a/src/Radarr.Api.V3/System/Backup/BackupController.cs b/src/Radarr.Api.V3/System/Backup/BackupController.cs index 00c9eedac..aa864960a 100644 --- a/src/Radarr.Api.V3/System/Backup/BackupController.cs +++ b/src/Radarr.Api.V3/System/Backup/BackupController.cs @@ -70,7 +70,7 @@ namespace Radarr.Api.V3.System.Backup } [HttpPost("restore/{id:int}")] - public object Restore(int id) + public object Restore([FromRoute] int id) { var backup = GetBackup(id); diff --git a/src/Radarr.Api.V3/Tags/TagController.cs b/src/Radarr.Api.V3/Tags/TagController.cs index f522bcfe2..7ef41cedf 100644 --- a/src/Radarr.Api.V3/Tags/TagController.cs +++ b/src/Radarr.Api.V3/Tags/TagController.cs @@ -34,13 +34,15 @@ namespace Radarr.Api.V3.Tags } [RestPostById] - public ActionResult Create(TagResource resource) + [Consumes("application/json")] + public ActionResult Create([FromBody] TagResource resource) { return Created(_tagService.Add(resource.ToModel()).Id); } [RestPutById] - public ActionResult Update(TagResource resource) + [Consumes("application/json")] + public ActionResult Update([FromBody] TagResource resource) { _tagService.Update(resource.ToModel()); return Accepted(resource.Id);