summaryrefslogtreecommitdiff
path: root/src/other_tools/utils
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2024-06-27 17:45:29 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2024-06-28 10:45:56 +0200
commitdfb361e44d01242eeefa7b554405d37402626766 (patch)
tree007a54ef3ee1c698d7c25c44de01fcf52831e075 /src/other_tools/utils
parent6f331bfa27faa92f848163827ee799b3e2de73c1 (diff)
downloadjustbuild-dfb361e44d01242eeefa7b554405d37402626766.tar.gz
Use (un)expected for network fetch
Diffstat (limited to 'src/other_tools/utils')
-rw-r--r--src/other_tools/utils/TARGETS1
-rw-r--r--src/other_tools/utils/content.hpp15
2 files changed, 8 insertions, 8 deletions
diff --git a/src/other_tools/utils/TARGETS b/src/other_tools/utils/TARGETS
index e210f901..27cbb93d 100644
--- a/src/other_tools/utils/TARGETS
+++ b/src/other_tools/utils/TARGETS
@@ -48,6 +48,7 @@
, ["src/buildtool/crypto", "hasher"]
, ["src/buildtool/logging", "log_level"]
, ["src/other_tools/just_mr", "mirrors"]
+ , ["src/utils/cpp", "expected"]
]
, "stage": ["src", "other_tools", "utils"]
}
diff --git a/src/other_tools/utils/content.hpp b/src/other_tools/utils/content.hpp
index 15c582c4..31dd7fc1 100644
--- a/src/other_tools/utils/content.hpp
+++ b/src/other_tools/utils/content.hpp
@@ -18,7 +18,6 @@
#include <optional>
#include <string>
#include <utility> // std::move
-#include <variant>
#include "src/buildtool/common/user_structs.hpp"
#include "src/buildtool/crypto/hasher.hpp"
@@ -26,6 +25,7 @@
#include "src/other_tools/just_mr/mirrors.hpp"
#include "src/other_tools/utils/curl_easy_handle.hpp"
#include "src/other_tools/utils/curl_url_handle.hpp"
+#include "src/utils/cpp/expected.hpp"
// Utilities related to the content of an archive
@@ -44,14 +44,13 @@
/// \brief Fetches a file from the internet and stores its content in memory.
/// Tries not only a given remote, but also all associated remote locations.
-/// \returns An error + data union, with the error message at index 0 and the
-/// fetched data at index 1.
+/// \returns The fetched data on success or an unexpected error as string.
[[nodiscard]] static auto NetworkFetchWithMirrors(
std::string const& fetch_url,
std::vector<std::string> const& mirrors,
CAInfoPtr const& ca_info,
MirrorsPtr const& additional_mirrors) noexcept
- -> std::variant<std::string, std::string> {
+ -> expected<std::string, std::string> {
// keep all remotes tried, to report in case fetch fails
std::string remotes_buffer{};
std::optional<std::string> data{std::nullopt};
@@ -81,10 +80,10 @@
// add local mirror to buffer
remotes_buffer.append(fmt::format("\n> {}", mirror));
}
- return data ? std::variant<std::string, std::string>(std::in_place_index<1>,
- *data)
- : std::variant<std::string, std::string>(std::in_place_index<0>,
- remotes_buffer);
+ if (not data) {
+ return unexpected{remotes_buffer};
+ }
+ return *data;
}
template <Hasher::HashType type>