From 0500d4347a6d31ef05fd860559e380c2e488c194 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Wed, 4 May 2022 16:28:12 -0400 Subject: JSON: add blob type that generates base64-encoded binary data --- libqpdf/JSON.cc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'libqpdf/JSON.cc') diff --git a/libqpdf/JSON.cc b/libqpdf/JSON.cc index 71ea33d7..8549b7ed 100644 --- a/libqpdf/JSON.cc +++ b/libqpdf/JSON.cc @@ -1,6 +1,8 @@ #include #include +#include +#include #include #include #include @@ -168,6 +170,22 @@ JSON::JSON_null::write(Pipeline* p, size_t) const *p << "null"; } +JSON::JSON_blob::JSON_blob(std::function fn) : + fn(fn) +{ +} + +void +JSON::JSON_blob::write(Pipeline* p, size_t) const +{ + *p << "\""; + Pl_Concatenate cat("blob concatenate", p); + Pl_Base64 base64("blob base64", &cat, Pl_Base64::a_encode); + fn(&base64); + base64.finish(); + *p << "\""; +} + void JSON::write(Pipeline* p, size_t depth) const { @@ -306,6 +324,12 @@ JSON::makeNull() return JSON(std::make_shared()); } +JSON +JSON::makeBlob(std::function fn) +{ + return JSON(std::make_shared(fn)); +} + bool JSON::isArray() const { -- cgit v1.2.3-54-g00ecf