7#include <packager/utils/absl_flag_hexbytes.h>
13#include <absl/strings/ascii.h>
14#include <absl/strings/str_format.h>
15#include <absl/strings/string_view.h>
16#include <absl/types/span.h>
18#include <packager/utils/hex_parser.h>
23bool AbslParseFlag(absl::string_view text, HexBytes* flag, std::string* error) {
24 std::string hexString(text);
25 absl::RemoveExtraAsciiWhitespace(&hexString);
27 if (hexString.empty()) {
28 flag->bytes = std::vector<uint8_t>(0, 0);
33 if (!shaka::ValidHexStringToBytes(hexString, &bytesRaw)) {
34 *error =
"Invalid hex string";
38 absl::string_view hex_str_view(bytesRaw);
39 absl::Span<const uint8_t> span(
40 reinterpret_cast<const uint8_t*
>(hex_str_view.data()),
42 flag->bytes = std::vector<uint8_t>(span.begin(), span.end());
47std::string AbslUnparseFlag(
const HexBytes& flag) {
49 for (
const auto byte : flag.bytes) {
50 absl::StrAppendFormat(&result,
"%02x",
byte);
All the methods that are virtual are virtual for mocking.