summaryrefslogtreecommitdiff
path: root/src/utils/cpp/curl_easy_handle.hpp
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-02-15 14:47:15 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-02-17 16:27:50 +0100
commitebe7695ee5803dd3c2bb4f22f5e12d776c985d56 (patch)
tree9aca606caff43ed369d6afafa75a09ff5388c251 /src/utils/cpp/curl_easy_handle.hpp
parentb6a4271feaa2ed9eaa553189183a74cb28c4b5fd (diff)
downloadjustbuild-ebe7695ee5803dd3c2bb4f22f5e12d776c985d56.tar.gz
structure cleanup: move libcurl utilities to other_tools...
...in order to not include unwanted dependencies in just proper. As the whole other_tools folder is meant to be excluded from bootstrapping, also remove the bootstrap guards.
Diffstat (limited to 'src/utils/cpp/curl_easy_handle.hpp')
-rw-r--r--src/utils/cpp/curl_easy_handle.hpp86
1 files changed, 0 insertions, 86 deletions
diff --git a/src/utils/cpp/curl_easy_handle.hpp b/src/utils/cpp/curl_easy_handle.hpp
deleted file mode 100644
index 5f318887..00000000
--- a/src/utils/cpp/curl_easy_handle.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2022 Huawei Cloud Computing Technology Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef INCLUDED_SRC_OTHER_TOOLS_CURL_EASY_HANDLE_HPP
-#define INCLUDED_SRC_OTHER_TOOLS_CURL_EASY_HANDLE_HPP
-
-#include <filesystem>
-#include <functional>
-#include <memory>
-#include <optional>
-
-#include "gsl-lite/gsl-lite.hpp"
-#include "src/utils/cpp/curl_context.hpp"
-
-extern "C" {
-#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
-using CURL = struct Curl_easy;
-#else
-using CURL = void;
-#endif
-}
-
-void curl_easy_closer(gsl::owner<CURL*> curl);
-
-class CurlEasyHandle {
- public:
- CurlEasyHandle() noexcept = default;
- ~CurlEasyHandle() noexcept = default;
-
- // prohibit moves and copies
- CurlEasyHandle(CurlEasyHandle const&) = delete;
- CurlEasyHandle(CurlEasyHandle&& other) = delete;
- auto operator=(CurlEasyHandle const&) = delete;
- auto operator=(CurlEasyHandle&& other) = delete;
-
- /// \brief Create a CurlEasyHandle object
- [[nodiscard]] auto static Create() noexcept
- -> std::shared_ptr<CurlEasyHandle>;
-
- /// \brief Download file from URL into given file_path.
- /// Will perform cleanup (i.e., remove empty file) in case download fails.
- /// Returns 0 if successful.
- [[nodiscard]] auto DownloadToFile(
- std::string const& url,
- std::filesystem::path const& file_path) noexcept -> int;
-
- /// \brief Download file from URL into string as binary.
- /// Returns the content or nullopt if download failure.
- [[nodiscard]] auto DownloadToString(std::string const& url) noexcept
- -> std::optional<std::string>;
-
- private:
- // IMPORTANT: the CurlContext must to be initialized before any curl object!
- CurlContext curl_context_{};
- std::unique_ptr<CURL, decltype(&curl_easy_closer)> handle_{
- nullptr,
- curl_easy_closer};
-
- /// \brief Overwrites write_callback to redirrect to file instead of stdout.
- [[nodiscard]] auto static EasyWriteToFile(gsl::owner<char*> data,
- size_t size,
- size_t nmemb,
- gsl::owner<void*> userptr)
- -> std::streamsize;
-
- /// \brief Overwrites write_callback to redirect to string instead of
- /// stdout.
- [[nodiscard]] auto static EasyWriteToString(gsl::owner<char*> data,
- size_t size,
- size_t nmemb,
- gsl::owner<void*> userptr)
- -> std::streamsize;
-};
-
-#endif // INCLUDED_SRC_OTHER_TOOLS_CURL_EASY_HANDLE_HPP \ No newline at end of file