handle nullptr errors

This commit is contained in:
Scott E. Graves 2025-02-19 16:59:05 -06:00
parent 2b72d3150c
commit 6e9d509442
2 changed files with 60 additions and 26 deletions

View File

@ -30,6 +30,7 @@
#include "utils/string.hpp"
#include "utils/unix.hpp"
#include "utils/windows.hpp"
#include <optional>
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 (response->status != httplib::StatusCode::OK_200) {
if (not response) {
utils::error::handle_error(
function_name, fmt::format("failed to delete download|{}|{}|{}",
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("remove stalled request failed|{}|{}|{}",
server.id, server.url, response->status));
return;
}
std::optional<nlohmann::json> 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;
}
if (not utils::string::contains("sonarr", server.id)) {
return;
}
nlohmann::json data({
} else if (utils::string::contains("sonarr", server.id)) {
data = nlohmann::json({
{"name", "EpisodeSearch"},
{"episodeIds", {episode_id}},
});
}
if (not data.has_value()) {
return;
}
response = cli.Post(fmt::format("/api/{}/command", server.api_version),
data.dump(), "application/json");
if (response->status != httplib::StatusCode::Created_201) {
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,
episode_id, response->status));
}
server.id, server.url, title, movie_id,
response->status));
}
} // namespace monitarr

View File

@ -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|{}|{}|{}",