diff --git a/monitarr/libmonitarr/src/actions.cpp b/monitarr/libmonitarr/src/actions.cpp index f6dea11..46e9b0c 100644 --- a/monitarr/libmonitarr/src/actions.cpp +++ b/monitarr/libmonitarr/src/actions.cpp @@ -30,6 +30,7 @@ #include "utils/string.hpp" #include "utils/unix.hpp" #include "utils/windows.hpp" +#include using namespace std::literals::chrono_literals; @@ -61,9 +62,17 @@ auto get_download(std::uint64_t record_id, const server_cfg &server) auto response = cli.Get(fmt::format("/api/{}/queue", server.api_version), params, {}); + if (not response) { + utils::error::handle_error( + function_name, + fmt::format("get download request failed|{}|{}|no response", + server.id, server.url, response->status)); + return std::nullopt; + } + if (response->status != httplib::StatusCode::OK_200) { utils::error::handle_error( - function_name, fmt::format("check server request failed|{}|{}|{}", + function_name, fmt::format("get download request failed|{}|{}|{}", server.id, server.url, response->status)); return std::nullopt; } @@ -101,9 +110,17 @@ auto list_queue(const server_cfg &server) -> int { auto response = cli.Get(fmt::format("/api/{}/queue", server.api_version), params, {}); + if (not response) { + utils::error::handle_error( + function_name, + fmt::format("list queue request failed|{}|{}|no response", server.id, + server.url, response->status)); + return 3; + } + if (response->status != httplib::StatusCode::OK_200) { utils::error::handle_error( - function_name, fmt::format("check server request failed|{}|{}|{}", + function_name, fmt::format("list queue request failed|{}|{}|{}", server.id, server.url, response->status)); return 3; } @@ -164,46 +181,55 @@ void remove_stalled(std::string_view download_id, std::string_view title, fmt::format("/api/{}/queue/{}?blocklist=true&skipRedownload=false", server.api_version, utils::string::split(download_id, '/', false).at(1U))); + if (not response) { + utils::error::handle_error( + function_name, + fmt::format("remove stalled request failed|{}|{}|no response", + server.id, server.url, response->status)); + return; + } + if (response->status != httplib::StatusCode::OK_200) { utils::error::handle_error( - function_name, fmt::format("failed to delete download|{}|{}|{}", + function_name, fmt::format("remove stalled request failed|{}|{}|{}", server.id, server.url, response->status)); return; } + std::optional data; + if (utils::string::contains("radarr", server.id)) { - nlohmann::json data({ + data = nlohmann::json({ {"name", "MoviesSearch"}, {"movieIds", {movie_id}}, }); - - response = cli.Post(fmt::format("/api/{}/command", server.api_version), - data.dump(), "application/json"); - if (response->status != httplib::StatusCode::Created_201) { - utils::error::handle_error(function_name, - fmt::format("failed to search|{}|{}|{}|{}|{}", - server.id, server.url, title, - movie_id, response->status)); - } - return; + } else if (utils::string::contains("sonarr", server.id)) { + data = nlohmann::json({ + {"name", "EpisodeSearch"}, + {"episodeIds", {episode_id}}, + }); } - if (not utils::string::contains("sonarr", server.id)) { + if (not data.has_value()) { return; } - nlohmann::json data({ - {"name", "EpisodeSearch"}, - {"episodeIds", {episode_id}}, - }); - response = cli.Post(fmt::format("/api/{}/command", server.api_version), - data.dump(), "application/json"); - if (response->status != httplib::StatusCode::Created_201) { - utils::error::handle_error(function_name, - fmt::format("failed to search|{}|{}|{}|{}|{}", - server.id, server.url, title, - episode_id, response->status)); + data->dump(), "application/json"); + if (not response) { + utils::error::handle_error( + function_name, fmt::format("failed to search|{}|{}|{}|{}|no response", + server.id, server.url, title, movie_id)); + return; } + + if (response->status == httplib::StatusCode::Created_201) { + return; + } + + utils::error::handle_error(function_name, + fmt::format("failed to search|{}|{}|{}|{}|{}", + server.id, server.url, title, movie_id, + response->status)); } } // namespace monitarr diff --git a/monitarr/monitarr/src/run_cmd.cpp b/monitarr/monitarr/src/run_cmd.cpp index db71c4a..611b27c 100644 --- a/monitarr/monitarr/src/run_cmd.cpp +++ b/monitarr/monitarr/src/run_cmd.cpp @@ -49,6 +49,14 @@ static void check_server(const server_cfg &server, data_db &state_db) { auto response = cli.Get(fmt::format("/api/{}/queue", server.api_version), params, {}); + if (not response) { + utils::error::handle_error( + function_name, + fmt::format("check server request failed|{}|{}|no response", + server.id, server.url, response->status)); + break; + } + if (response->status != httplib::StatusCode::OK_200) { utils::error::handle_error( function_name, fmt::format("check server request failed|{}|{}|{}",