diff options
author | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2023-02-15 14:47:15 +0100 |
---|---|---|
committer | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2023-02-17 16:27:50 +0100 |
commit | ebe7695ee5803dd3c2bb4f22f5e12d776c985d56 (patch) | |
tree | 9aca606caff43ed369d6afafa75a09ff5388c251 /src/utils/cpp/curl_easy_handle.hpp | |
parent | b6a4271feaa2ed9eaa553189183a74cb28c4b5fd (diff) | |
download | justbuild-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.hpp | 86 |
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 |