From f0d9b43480003e9cc3362a185a9d1cb7000abec3 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 30 May 2023 06:39:51 +0300 Subject: [PATCH] Add some API attributes --- src/Prowlarr.Api.V1/Commands/CommandController.cs | 1 + src/Prowlarr.Api.V1/Config/ConfigController.cs | 1 + src/Prowlarr.Api.V1/Config/HostConfigController.cs | 3 +++ src/Prowlarr.Api.V1/Config/UiConfigController.cs | 2 ++ src/Prowlarr.Api.V1/CustomFilters/CustomFilterController.cs | 2 ++ src/Prowlarr.Api.V1/FileSystem/FileSystemController.cs | 2 ++ src/Prowlarr.Api.V1/Health/HealthController.cs | 1 + .../Indexers/IndexerDefaultCategoriesController.cs | 1 + src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs | 2 ++ src/Prowlarr.Api.V1/Indexers/IndexerStatsController.cs | 1 + src/Prowlarr.Api.V1/Indexers/IndexerStatusController.cs | 2 ++ src/Prowlarr.Api.V1/Logs/LogController.cs | 1 + src/Prowlarr.Api.V1/Logs/LogFileControllerBase.cs | 3 +++ src/Prowlarr.Api.V1/Profiles/App/AppProfileController.cs | 2 ++ src/Prowlarr.Api.V1/Profiles/App/AppProfileSchemaModule.cs | 1 + src/Prowlarr.Api.V1/ProviderControllerBase.cs | 5 +++++ src/Prowlarr.Api.V1/Search/SearchController.cs | 6 ++++++ src/Prowlarr.Api.V1/System/Backup/BackupController.cs | 1 + src/Prowlarr.Api.V1/System/SystemController.cs | 3 +++ src/Prowlarr.Api.V1/System/Tasks/TaskController.cs | 1 + src/Prowlarr.Api.V1/Tags/TagController.cs | 5 +++++ src/Prowlarr.Api.V1/Tags/TagDetailsController.cs | 1 + src/Prowlarr.Api.V1/Update/UpdateController.cs | 1 + src/Prowlarr.Http/REST/RestController.cs | 1 + 24 files changed, 49 insertions(+) diff --git a/src/Prowlarr.Api.V1/Commands/CommandController.cs b/src/Prowlarr.Api.V1/Commands/CommandController.cs index 076121f5a..cbca618a3 100644 --- a/src/Prowlarr.Api.V1/Commands/CommandController.cs +++ b/src/Prowlarr.Api.V1/Commands/CommandController.cs @@ -48,6 +48,7 @@ namespace Prowlarr.Api.V1.Commands } [RestPostById] + [Consumes("application/json")] [Produces("application/json")] public ActionResult StartCommand(CommandResource commandResource) { diff --git a/src/Prowlarr.Api.V1/Config/ConfigController.cs b/src/Prowlarr.Api.V1/Config/ConfigController.cs index f6a001e10..120a69352 100644 --- a/src/Prowlarr.Api.V1/Config/ConfigController.cs +++ b/src/Prowlarr.Api.V1/Config/ConfigController.cs @@ -33,6 +33,7 @@ namespace Prowlarr.Api.V1.Config } [RestPutById] + [Consumes("application/json")] [Produces("application/json")] public virtual ActionResult SaveConfig(TResource resource) { diff --git a/src/Prowlarr.Api.V1/Config/HostConfigController.cs b/src/Prowlarr.Api.V1/Config/HostConfigController.cs index 12fcfda3a..9e3a82498 100644 --- a/src/Prowlarr.Api.V1/Config/HostConfigController.cs +++ b/src/Prowlarr.Api.V1/Config/HostConfigController.cs @@ -87,6 +87,7 @@ namespace Prowlarr.Api.V1.Config } [HttpGet] + [Produces("application/json")] public HostConfigResource GetHostConfig() { var resource = HostConfigResourceMapper.ToResource(_configFileProvider, _configService); @@ -103,6 +104,8 @@ namespace Prowlarr.Api.V1.Config } [RestPutById] + [Consumes("application/json")] + [Produces("application/json")] public ActionResult SaveHostConfig(HostConfigResource resource) { var dictionary = resource.GetType() diff --git a/src/Prowlarr.Api.V1/Config/UiConfigController.cs b/src/Prowlarr.Api.V1/Config/UiConfigController.cs index eda73e967..e6ddb073a 100644 --- a/src/Prowlarr.Api.V1/Config/UiConfigController.cs +++ b/src/Prowlarr.Api.V1/Config/UiConfigController.cs @@ -19,6 +19,8 @@ namespace Prowlarr.Api.V1.Config } [RestPutById] + [Consumes("application/json")] + [Produces("application/json")] public override ActionResult SaveConfig(UiConfigResource resource) { var dictionary = resource.GetType() diff --git a/src/Prowlarr.Api.V1/CustomFilters/CustomFilterController.cs b/src/Prowlarr.Api.V1/CustomFilters/CustomFilterController.cs index e5aca3c85..b4a578c09 100644 --- a/src/Prowlarr.Api.V1/CustomFilters/CustomFilterController.cs +++ b/src/Prowlarr.Api.V1/CustomFilters/CustomFilterController.cs @@ -30,6 +30,7 @@ namespace Prowlarr.Api.V1.CustomFilters } [RestPostById] + [Consumes("application/json")] [Produces("application/json")] public ActionResult AddCustomFilter(CustomFilterResource resource) { @@ -39,6 +40,7 @@ namespace Prowlarr.Api.V1.CustomFilters } [RestPutById] + [Consumes("application/json")] [Produces("application/json")] public ActionResult UpdateCustomFilter(CustomFilterResource resource) { diff --git a/src/Prowlarr.Api.V1/FileSystem/FileSystemController.cs b/src/Prowlarr.Api.V1/FileSystem/FileSystemController.cs index 154ce3990..0834887ac 100644 --- a/src/Prowlarr.Api.V1/FileSystem/FileSystemController.cs +++ b/src/Prowlarr.Api.V1/FileSystem/FileSystemController.cs @@ -18,12 +18,14 @@ namespace Prowlarr.Api.V1.FileSystem } [HttpGet] + [Produces("application/json")] public IActionResult GetContents(string path, bool includeFiles = false, bool allowFoldersWithoutTrailingSlashes = false) { return Ok(_fileSystemLookupService.LookupContents(path, includeFiles, allowFoldersWithoutTrailingSlashes)); } [HttpGet("type")] + [Produces("application/json")] public object GetEntityType(string path) { if (_diskProvider.FileExists(path)) diff --git a/src/Prowlarr.Api.V1/Health/HealthController.cs b/src/Prowlarr.Api.V1/Health/HealthController.cs index 9c562214d..27fe886aa 100644 --- a/src/Prowlarr.Api.V1/Health/HealthController.cs +++ b/src/Prowlarr.Api.V1/Health/HealthController.cs @@ -22,6 +22,7 @@ namespace Prowlarr.Api.V1.Health _healthCheckService = healthCheckService; } + [NonAction] public override HealthResource GetResourceById(int id) { throw new NotImplementedException(); diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerDefaultCategoriesController.cs b/src/Prowlarr.Api.V1/Indexers/IndexerDefaultCategoriesController.cs index 6e8478c81..3c5c0b43e 100644 --- a/src/Prowlarr.Api.V1/Indexers/IndexerDefaultCategoriesController.cs +++ b/src/Prowlarr.Api.V1/Indexers/IndexerDefaultCategoriesController.cs @@ -8,6 +8,7 @@ namespace NzbDrone.Api.V1.Indexers public class IndexerDefaultCategoriesController : Controller { [HttpGet] + [Produces("application/json")] public IndexerCategory[] GetAll() { return NewznabStandardCategory.ParentCats; diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs b/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs index bf1471e84..cb60d36f4 100644 --- a/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs +++ b/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs @@ -22,6 +22,7 @@ namespace Prowlarr.Api.V1.Indexers } [HttpPut] + [Consumes("application/json")] public IActionResult SaveAll(IndexerEditorResource resource) { var indexersToUpdate = _indexerFactory.AllProviders(false).Select(x => (IndexerDefinition)x.Definition).Where(d => resource.IndexerIds.Contains(d.Id)); @@ -71,6 +72,7 @@ namespace Prowlarr.Api.V1.Indexers } [HttpDelete] + [Consumes("application/json")] public object DeleteIndexers([FromBody] IndexerEditorResource resource) { _indexerFactory.Delete(resource.IndexerIds); diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerStatsController.cs b/src/Prowlarr.Api.V1/Indexers/IndexerStatsController.cs index 7bd3c47b7..0e352506c 100644 --- a/src/Prowlarr.Api.V1/Indexers/IndexerStatsController.cs +++ b/src/Prowlarr.Api.V1/Indexers/IndexerStatsController.cs @@ -16,6 +16,7 @@ namespace Prowlarr.Api.V1.Indexers } [HttpGet] + [Produces("application/json")] public IndexerStatsResource GetAll(DateTime? startDate, DateTime? endDate) { var statsStartDate = startDate ?? DateTime.MinValue; diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerStatusController.cs b/src/Prowlarr.Api.V1/Indexers/IndexerStatusController.cs index d6452f3a9..566be187f 100644 --- a/src/Prowlarr.Api.V1/Indexers/IndexerStatusController.cs +++ b/src/Prowlarr.Api.V1/Indexers/IndexerStatusController.cs @@ -23,12 +23,14 @@ namespace Prowlarr.Api.V1.Indexers _indexerStatusService = indexerStatusService; } + [NonAction] public override IndexerStatusResource GetResourceById(int id) { throw new NotImplementedException(); } [HttpGet] + [Produces("application/json")] public List GetAll() { return _indexerStatusService.GetBlockedProviders().ToResource(); diff --git a/src/Prowlarr.Api.V1/Logs/LogController.cs b/src/Prowlarr.Api.V1/Logs/LogController.cs index 047c37b7e..3f0c6df52 100644 --- a/src/Prowlarr.Api.V1/Logs/LogController.cs +++ b/src/Prowlarr.Api.V1/Logs/LogController.cs @@ -17,6 +17,7 @@ namespace Prowlarr.Api.V1.Logs } [HttpGet] + [Produces("application/json")] public PagingResource GetLogs() { var pagingResource = Request.ReadPagingResourceFromRequest(); diff --git a/src/Prowlarr.Api.V1/Logs/LogFileControllerBase.cs b/src/Prowlarr.Api.V1/Logs/LogFileControllerBase.cs index b5414beb9..54ed7d1c9 100644 --- a/src/Prowlarr.Api.V1/Logs/LogFileControllerBase.cs +++ b/src/Prowlarr.Api.V1/Logs/LogFileControllerBase.cs @@ -26,6 +26,7 @@ namespace Prowlarr.Api.V1.Logs } [HttpGet] + [Produces("application/json")] public List GetLogFilesResponse() { var result = new List(); @@ -51,6 +52,8 @@ namespace Prowlarr.Api.V1.Logs } [HttpGet(@"{filename:regex([[-.a-zA-Z0-9]]+?\.txt)}")] + [Produces("text/plain")] + [ProducesResponseType(typeof(IActionResult), 200)] public IActionResult GetLogFileResponse(string filename) { LogManager.Flush(); diff --git a/src/Prowlarr.Api.V1/Profiles/App/AppProfileController.cs b/src/Prowlarr.Api.V1/Profiles/App/AppProfileController.cs index 586b2ca9f..0b4b7ae4f 100644 --- a/src/Prowlarr.Api.V1/Profiles/App/AppProfileController.cs +++ b/src/Prowlarr.Api.V1/Profiles/App/AppProfileController.cs @@ -20,6 +20,7 @@ namespace Prowlarr.Api.V1.Profiles.App } [RestPostById] + [Consumes("application/json")] [Produces("application/json")] public ActionResult Create(AppProfileResource resource) { @@ -37,6 +38,7 @@ namespace Prowlarr.Api.V1.Profiles.App } [RestPutById] + [Consumes("application/json")] [Produces("application/json")] public ActionResult Update(AppProfileResource resource) { diff --git a/src/Prowlarr.Api.V1/Profiles/App/AppProfileSchemaModule.cs b/src/Prowlarr.Api.V1/Profiles/App/AppProfileSchemaModule.cs index 9383d795f..7cdbda0ed 100644 --- a/src/Prowlarr.Api.V1/Profiles/App/AppProfileSchemaModule.cs +++ b/src/Prowlarr.Api.V1/Profiles/App/AppProfileSchemaModule.cs @@ -15,6 +15,7 @@ namespace Prowlarr.Api.V1.Profiles.App } [HttpGet] + [Produces("application/json")] public AppProfileResource GetSchema() { var qualityProfile = _profileService.GetDefaultProfile(string.Empty); diff --git a/src/Prowlarr.Api.V1/ProviderControllerBase.cs b/src/Prowlarr.Api.V1/ProviderControllerBase.cs index 52b931956..9edfe1642 100644 --- a/src/Prowlarr.Api.V1/ProviderControllerBase.cs +++ b/src/Prowlarr.Api.V1/ProviderControllerBase.cs @@ -58,6 +58,7 @@ namespace Prowlarr.Api.V1 } [RestPostById] + [Consumes("application/json")] [Produces("application/json")] public ActionResult CreateProvider([FromBody] TProviderResource providerResource, [FromQuery] bool forceSave = false) { @@ -74,6 +75,7 @@ namespace Prowlarr.Api.V1 } [RestPutById] + [Consumes("application/json")] [Produces("application/json")] public ActionResult UpdateProvider([FromBody] TProviderResource providerResource, [FromQuery] bool forceSave = false) { @@ -135,6 +137,7 @@ namespace Prowlarr.Api.V1 [SkipValidation(true, false)] [HttpPost("test")] + [Consumes("application/json")] public object Test([FromBody] TProviderResource providerResource) { var providerDefinition = GetDefinition(providerResource, true, true, true); @@ -168,6 +171,8 @@ namespace Prowlarr.Api.V1 [SkipValidation] [HttpPost("action/{name}")] + [Consumes("application/json")] + [Produces("application/json")] public IActionResult RequestAction(string name, [FromBody] TProviderResource resource) { var providerDefinition = GetDefinition(resource, false, false, false); diff --git a/src/Prowlarr.Api.V1/Search/SearchController.cs b/src/Prowlarr.Api.V1/Search/SearchController.cs index 8ffd81a71..a0deb14ca 100644 --- a/src/Prowlarr.Api.V1/Search/SearchController.cs +++ b/src/Prowlarr.Api.V1/Search/SearchController.cs @@ -45,12 +45,15 @@ namespace Prowlarr.Api.V1.Search _remoteReleaseCache = cacheManager.GetCache(GetType(), "remoteReleases"); } + [NonAction] public override ReleaseResource GetResourceById(int id) { throw new NotImplementedException(); } [HttpPost] + [Consumes("application/json")] + [Produces("application/json")] public ActionResult GrabRelease(ReleaseResource release) { ValidateResource(release); @@ -82,6 +85,8 @@ namespace Prowlarr.Api.V1.Search } [HttpPost("bulk")] + [Consumes("application/json")] + [Produces("application/json")] public ActionResult GrabReleases(List releases) { var source = Request.GetSource(); @@ -114,6 +119,7 @@ namespace Prowlarr.Api.V1.Search } [HttpGet] + [Produces("application/json")] public Task> GetAll([FromQuery] SearchResource payload) { return GetSearchReleases(payload); diff --git a/src/Prowlarr.Api.V1/System/Backup/BackupController.cs b/src/Prowlarr.Api.V1/System/Backup/BackupController.cs index 15f8b5889..bcb236652 100644 --- a/src/Prowlarr.Api.V1/System/Backup/BackupController.cs +++ b/src/Prowlarr.Api.V1/System/Backup/BackupController.cs @@ -32,6 +32,7 @@ namespace Prowlarr.Api.V1.System.Backup } [HttpGet] + [Produces("application/json")] public List GetBackupFiles() { var backups = _backupService.GetBackups(); diff --git a/src/Prowlarr.Api.V1/System/SystemController.cs b/src/Prowlarr.Api.V1/System/SystemController.cs index 3c53b6cad..e5ffb9996 100644 --- a/src/Prowlarr.Api.V1/System/SystemController.cs +++ b/src/Prowlarr.Api.V1/System/SystemController.cs @@ -54,6 +54,7 @@ namespace Prowlarr.Api.V1.System } [HttpGet("status")] + [Produces("application/json")] public SystemResource GetStatus() { return new SystemResource @@ -93,6 +94,7 @@ namespace Prowlarr.Api.V1.System } [HttpGet("routes")] + [Produces("application/json")] public IActionResult GetRoutes() { using (var sw = new StringWriter()) @@ -104,6 +106,7 @@ namespace Prowlarr.Api.V1.System } [HttpGet("routes/duplicate")] + [Produces("application/json")] public object DuplicateRoutes() { return _detector.GetDuplicateEndpoints(_endpointData); diff --git a/src/Prowlarr.Api.V1/System/Tasks/TaskController.cs b/src/Prowlarr.Api.V1/System/Tasks/TaskController.cs index 428f78566..b4999f263 100644 --- a/src/Prowlarr.Api.V1/System/Tasks/TaskController.cs +++ b/src/Prowlarr.Api.V1/System/Tasks/TaskController.cs @@ -23,6 +23,7 @@ namespace Prowlarr.Api.V1.System.Tasks } [HttpGet] + [Produces("application/json")] public List GetAll() { return _taskManager.GetAll() diff --git a/src/Prowlarr.Api.V1/Tags/TagController.cs b/src/Prowlarr.Api.V1/Tags/TagController.cs index 554355feb..740fb9741 100644 --- a/src/Prowlarr.Api.V1/Tags/TagController.cs +++ b/src/Prowlarr.Api.V1/Tags/TagController.cs @@ -28,18 +28,23 @@ namespace Prowlarr.Api.V1.Tags } [HttpGet] + [Produces("application/json")] public List GetAll() { return _tagService.All().ToResource(); } [RestPostById] + [Consumes("application/json")] + [Produces("application/json")] public ActionResult Create(TagResource resource) { return Created(_tagService.Add(resource.ToModel()).Id); } [RestPutById] + [Consumes("application/json")] + [Produces("application/json")] public ActionResult Update(TagResource resource) { _tagService.Update(resource.ToModel()); diff --git a/src/Prowlarr.Api.V1/Tags/TagDetailsController.cs b/src/Prowlarr.Api.V1/Tags/TagDetailsController.cs index 2c927dcf0..c37b91452 100644 --- a/src/Prowlarr.Api.V1/Tags/TagDetailsController.cs +++ b/src/Prowlarr.Api.V1/Tags/TagDetailsController.cs @@ -22,6 +22,7 @@ namespace Prowlarr.Api.V1.Tags } [HttpGet] + [Produces("application/json")] public List GetAll() { return _tagService.Details().ToResource(); diff --git a/src/Prowlarr.Api.V1/Update/UpdateController.cs b/src/Prowlarr.Api.V1/Update/UpdateController.cs index 5c9b362bf..077a6f6f8 100644 --- a/src/Prowlarr.Api.V1/Update/UpdateController.cs +++ b/src/Prowlarr.Api.V1/Update/UpdateController.cs @@ -21,6 +21,7 @@ namespace Prowlarr.Api.V1.Update } [HttpGet] + [Produces("application/json")] public List GetRecentUpdates() { var resources = _recentUpdateProvider.GetRecentUpdatePackages() diff --git a/src/Prowlarr.Http/REST/RestController.cs b/src/Prowlarr.Http/REST/RestController.cs index d1d07576e..3ec48b75f 100644 --- a/src/Prowlarr.Http/REST/RestController.cs +++ b/src/Prowlarr.Http/REST/RestController.cs @@ -46,6 +46,7 @@ namespace Prowlarr.Http.REST } [RestGetById] + [Produces("application/json")] public abstract TResource GetResourceById(int id); public override void OnActionExecuting(ActionExecutingContext context)