handle nullptr errors
This commit is contained in:
parent
2b72d3150c
commit
6e9d509442
@ -30,6 +30,7 @@
|
|||||||
#include "utils/string.hpp"
|
#include "utils/string.hpp"
|
||||||
#include "utils/unix.hpp"
|
#include "utils/unix.hpp"
|
||||||
#include "utils/windows.hpp"
|
#include "utils/windows.hpp"
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
using namespace std::literals::chrono_literals;
|
using namespace std::literals::chrono_literals;
|
||||||
|
|
||||||
@ -61,9 +62,17 @@ auto get_download(std::uint64_t record_id, const server_cfg &server)
|
|||||||
|
|
||||||
auto response =
|
auto response =
|
||||||
cli.Get(fmt::format("/api/{}/queue", server.api_version), params, {});
|
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) {
|
if (response->status != httplib::StatusCode::OK_200) {
|
||||||
utils::error::handle_error(
|
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));
|
server.id, server.url, response->status));
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
@ -101,9 +110,17 @@ auto list_queue(const server_cfg &server) -> int {
|
|||||||
|
|
||||||
auto response =
|
auto response =
|
||||||
cli.Get(fmt::format("/api/{}/queue", server.api_version), params, {});
|
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) {
|
if (response->status != httplib::StatusCode::OK_200) {
|
||||||
utils::error::handle_error(
|
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));
|
server.id, server.url, response->status));
|
||||||
return 3;
|
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",
|
fmt::format("/api/{}/queue/{}?blocklist=true&skipRedownload=false",
|
||||||
server.api_version,
|
server.api_version,
|
||||||
utils::string::split(download_id, '/', false).at(1U)));
|
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) {
|
if (response->status != httplib::StatusCode::OK_200) {
|
||||||
utils::error::handle_error(
|
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));
|
server.id, server.url, response->status));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::optional<nlohmann::json> data;
|
||||||
|
|
||||||
if (utils::string::contains("radarr", server.id)) {
|
if (utils::string::contains("radarr", server.id)) {
|
||||||
nlohmann::json data({
|
data = nlohmann::json({
|
||||||
{"name", "MoviesSearch"},
|
{"name", "MoviesSearch"},
|
||||||
{"movieIds", {movie_id}},
|
{"movieIds", {movie_id}},
|
||||||
});
|
});
|
||||||
|
} else if (utils::string::contains("sonarr", server.id)) {
|
||||||
response = cli.Post(fmt::format("/api/{}/command", server.api_version),
|
data = nlohmann::json({
|
||||||
data.dump(), "application/json");
|
{"name", "EpisodeSearch"},
|
||||||
if (response->status != httplib::StatusCode::Created_201) {
|
{"episodeIds", {episode_id}},
|
||||||
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)) {
|
if (not data.has_value()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nlohmann::json data({
|
|
||||||
{"name", "EpisodeSearch"},
|
|
||||||
{"episodeIds", {episode_id}},
|
|
||||||
});
|
|
||||||
|
|
||||||
response = cli.Post(fmt::format("/api/{}/command", server.api_version),
|
response = cli.Post(fmt::format("/api/{}/command", server.api_version),
|
||||||
data.dump(), "application/json");
|
data->dump(), "application/json");
|
||||||
if (response->status != httplib::StatusCode::Created_201) {
|
if (not response) {
|
||||||
utils::error::handle_error(function_name,
|
utils::error::handle_error(
|
||||||
fmt::format("failed to search|{}|{}|{}|{}|{}",
|
function_name, fmt::format("failed to search|{}|{}|{}|{}|no response",
|
||||||
server.id, server.url, title,
|
server.id, server.url, title, movie_id));
|
||||||
episode_id, response->status));
|
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
|
} // namespace monitarr
|
||||||
|
@ -49,6 +49,14 @@ static void check_server(const server_cfg &server, data_db &state_db) {
|
|||||||
|
|
||||||
auto response =
|
auto response =
|
||||||
cli.Get(fmt::format("/api/{}/queue", server.api_version), params, {});
|
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) {
|
if (response->status != httplib::StatusCode::OK_200) {
|
||||||
utils::error::handle_error(
|
utils::error::handle_error(
|
||||||
function_name, fmt::format("check server request failed|{}|{}|{}",
|
function_name, fmt::format("check server request failed|{}|{}|{}",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user