// Copyright (c) 2026 Juhapekka Piiroinen // All Rights Reserved. // AmoosedWeb project: https://amoosed.com // Usage: native-resource ORIGIN VIRTUAL_RESOURCE_PATH NEW_OUTPUT_FILE #include #if defined(_WIN32) #include #include #include #include using Http = amoosed::WindowsHttpHost; using Crypto = amoosed::WindowsCryptoHost; using Output = amoosed::WindowsFileOutput; using Media = amoosed::WindowsMediaDecoder; #else #include #include #include #include using Http = amoosed::CurlHttpHost; using Crypto = amoosed::OpenSslCryptoHost; using Output = amoosed::PosixFileOutput; using Media = amoosed::PosixMediaDecoder; #endif #include #include int main(int argc, char** argv) { if (argc != 4) { std::cerr << "Usage: native-resource ORIGIN VIRTUAL_RESOURCE_PATH NEW_OUTPUT_FILE\n"; return 2; } #if !defined(_WIN32) if (!Http::initialize()) { std::cerr << "HTTP initialization failed\n"; return 3; } #endif std::string error; Http http(argv[1], error); if (!http.ready()) { std::cerr << error << '\n'; return 3; } Crypto crypto; Media media; amoosed::IndexResult index; if (!amoosed::open_hosted_index(http, crypto, index, error)) { std::cerr << error << '\n'; return 4; } Output output(argv[3], error); if (!output.ready()) { std::cerr << error << '\n'; return 5; } amoosed::DownloadResult result; if (!amoosed::download_resource(index.app, argv[2], nullptr, http, crypto, output, result, error, &media)) { std::cerr << error << '\n'; return 6; } std::cout << "Verified " << result.bytes << " bytes: " << result.sha256 << '\n'; }