From 200ca7237a47891d879f9d28f5b15fcc3c73a314 Mon Sep 17 00:00:00 2001 From: Vladyslav Baranovskyi Date: Mon, 17 Jun 2024 12:53:58 +0300 Subject: [PATCH] Shallow copy of curl repo, WebResourceLoader::IsUrl is now static, returning empty array instead of throwing an exception --- 3rdParty/curl/CMakeLists.txt | 1 + openVulkanoCpp/Host/WebResourceLoader.cpp | 16 ++++++++-------- openVulkanoCpp/Host/WebResourceLoader.hpp | 3 ++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/3rdParty/curl/CMakeLists.txt b/3rdParty/curl/CMakeLists.txt index 84908ad..92cfc23 100644 --- a/3rdParty/curl/CMakeLists.txt +++ b/3rdParty/curl/CMakeLists.txt @@ -8,6 +8,7 @@ FetchContent_Declare( curl GIT_REPOSITORY ${CURL_REPO} GIT_TAG curl-7_79_1 + GIT_SHALLOW TRUE ) set(BUILD_CURL_EXE OFF) diff --git a/openVulkanoCpp/Host/WebResourceLoader.cpp b/openVulkanoCpp/Host/WebResourceLoader.cpp index e3bb245..151e9ab 100644 --- a/openVulkanoCpp/Host/WebResourceLoader.cpp +++ b/openVulkanoCpp/Host/WebResourceLoader.cpp @@ -16,7 +16,7 @@ namespace OpenVulkano { namespace { - size_t curlDownloader(void* contents, size_t size, size_t memBlockCount, void* userData) + size_t CurlDownloader(void* contents, size_t size, size_t memBlockCount, void* userData) { size_t totalSize = size * memBlockCount; std::vector* buffer = static_cast*>(userData); @@ -25,6 +25,11 @@ namespace OpenVulkano } } + bool WebResourceLoader::IsUrl(const std::string& str) + { + return str.find("http://") == 0 || str.find("https://") == 0 || str.find("ftp://") == 0; + } + WebResourceLoader::WebResourceLoader() { m_cacheDirectory = AppFolders::GetAppCacheDir() / "resources"; @@ -50,7 +55,7 @@ namespace OpenVulkano if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &curlDownloader); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &CurlDownloader); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); #ifdef __APPLE__ @@ -72,11 +77,6 @@ namespace OpenVulkano return Array(buffer); } - bool WebResourceLoader::IsUrl(const std::string& str) - { - return str.find("http://") == 0 || str.find("https://") == 0 || str.find("ftp://") == 0; - } - Array WebResourceLoader::GetResource(const std::string& resourceName) { if (IsUrl(resourceName)) @@ -85,6 +85,6 @@ namespace OpenVulkano if (std::filesystem::exists(cacheFilePath)) { return Utils::ReadFile(cacheFilePath.string()); } else { return DownloadResource(resourceName); } } - throw std::runtime_error("Resource name is not a valid URL"); + return Array(); } } \ No newline at end of file diff --git a/openVulkanoCpp/Host/WebResourceLoader.hpp b/openVulkanoCpp/Host/WebResourceLoader.hpp index 3a267b3..5159e85 100644 --- a/openVulkanoCpp/Host/WebResourceLoader.hpp +++ b/openVulkanoCpp/Host/WebResourceLoader.hpp @@ -18,9 +18,10 @@ namespace OpenVulkano std::filesystem::path GetCacheFilePath(const std::string& url); Array DownloadResource(const std::string& url); - bool IsUrl(const std::string& str); public: + static bool IsUrl(const std::string& str); + WebResourceLoader(); ~WebResourceLoader(); Array GetResource(const std::string& resourceName) override;