29 const std::string type_name =
"rds_file";
32 const auto& rdsmap = extract_json_object(metadata.
other, type_name);
34 const std::string& vstring = extract_json_version_string(rdsmap);
35 auto version = ritsuko::parse_version_string(vstring.c_str(), vstring.size(),
true);
36 if (version.major != 1) {
37 throw std::runtime_error(
"unsupported version string '" + vstring +
"'");
40 std::throw_with_nested(std::runtime_error(
"failed to validate 'version'"));
43 std::throw_with_nested(std::runtime_error(
"failed to validate '" + type_name +
"' in the object metadata"));
46 auto fpath = path /
"file.rds";
49 check_gzip_file_signature(fpath);
50 check_gunzipped_file_signature(fpath,
"X\n", 2,
"an RDS file");
52 std::throw_with_nested(std::runtime_error(
"failed to validate '" + fpath.filename().string() +
"'"));
void validate_rds_file(const std::filesystem::path &path, const ObjectMetadata &metadata, const Options &options)
Definition rds_file.hpp:28