summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-01-18 22:53:12 +0100
committerCarl Hetherington <cth@carlh.net>2021-01-18 22:53:12 +0100
commit2c11132af71aefb81f9e201403b1f3b9b005d0c0 (patch)
tree054e89a5c20f04d705ca54a474bf1bd4cfc575df /src
parent8e4f704c6624c42093306918a8904e2159bde141 (diff)
Add some more access to PKL.
Diffstat (limited to 'src')
-rw-r--r--src/pkl.cc35
-rw-r--r--src/pkl.h57
2 files changed, 59 insertions, 33 deletions
diff --git a/src/pkl.cc b/src/pkl.cc
index 5fb27aab..2a5b8b7d 100644
--- a/src/pkl.cc
+++ b/src/pkl.cc
@@ -42,6 +42,7 @@
using std::string;
using std::shared_ptr;
+using std::make_shared;
using boost::optional;
using namespace dcp;
@@ -68,15 +69,15 @@ PKL::PKL (boost::filesystem::path file)
_issuer = pkl.string_child ("Issuer");
_creator = pkl.string_child ("Creator");
- BOOST_FOREACH (cxml::ConstNodePtr i, pkl.node_child("AssetList")->node_children("Asset")) {
- _asset_list.push_back (shared_ptr<Asset> (new Asset (i)));
+ for (auto i: pkl.node_child("AssetList")->node_children("Asset")) {
+ _asset_list.push_back (make_shared<Asset>(i));
}
}
void
PKL::add_asset (std::string id, boost::optional<std::string> annotation_text, std::string hash, int64_t size, std::string type)
{
- _asset_list.push_back (shared_ptr<Asset> (new Asset (id, annotation_text, hash, size, type)));
+ _asset_list.push_back (make_shared<Asset>(id, annotation_text, hash, size, type));
}
void
@@ -98,16 +99,16 @@ PKL::write (boost::filesystem::path file, shared_ptr<const CertificateChain> sig
pkl->add_child("Issuer")->add_child_text (_issuer);
pkl->add_child("Creator")->add_child_text (_creator);
- xmlpp::Element* asset_list = pkl->add_child("AssetList");
- BOOST_FOREACH (shared_ptr<Asset> i, _asset_list) {
- xmlpp::Element* asset = asset_list->add_child("Asset");
+ auto asset_list = pkl->add_child("AssetList");
+ for (auto i: _asset_list) {
+ auto asset = asset_list->add_child("Asset");
asset->add_child("Id")->add_child_text ("urn:uuid:" + i->id());
- if (i->annotation_text) {
- asset->add_child("AnnotationText")->add_child_text (*i->annotation_text);
+ if (i->annotation_text()) {
+ asset->add_child("AnnotationText")->add_child_text (*i->annotation_text());
}
- asset->add_child("Hash")->add_child_text (i->hash);
- asset->add_child("Size")->add_child_text (raw_convert<string> (i->size));
- asset->add_child("Type")->add_child_text (i->type);
+ asset->add_child("Hash")->add_child_text (i->hash());
+ asset->add_child("Size")->add_child_text (raw_convert<string>(i->size()));
+ asset->add_child("Type")->add_child_text (i->type());
}
indent (pkl, 0);
@@ -123,23 +124,23 @@ PKL::write (boost::filesystem::path file, shared_ptr<const CertificateChain> sig
optional<string>
PKL::hash (string id) const
{
- BOOST_FOREACH (shared_ptr<Asset> i, _asset_list) {
+ for (auto i: _asset_list) {
if (i->id() == id) {
- return i->hash;
+ return i->hash();
}
}
- return optional<string>();
+ return {};
}
optional<string>
PKL::type (string id) const
{
- BOOST_FOREACH (shared_ptr<Asset> i, _asset_list) {
+ for (auto i: _asset_list) {
if (i->id() == id) {
- return i->type;
+ return i->type();
}
}
- return optional<string>();
+ return {};
}
diff --git a/src/pkl.h b/src/pkl.h
index 0ea87219..515c88b8 100644
--- a/src/pkl.h
+++ b/src/pkl.h
@@ -60,6 +60,10 @@ public:
return _standard;
}
+ boost::optional<std::string> annotation_text () const {
+ return _annotation_text;
+ }
+
boost::optional<std::string> hash (std::string id) const;
boost::optional<std::string> type (std::string id) const;
@@ -71,33 +75,54 @@ public:
return _file;
}
-private:
-
class Asset : public Object
{
public:
Asset (cxml::ConstNodePtr node)
: Object (remove_urn_uuid(node->string_child("Id")))
- , annotation_text (node->optional_string_child("AnnotationText"))
- , hash (node->string_child("Hash"))
- , size (node->number_child<int64_t>("Size"))
- , type (node->string_child("Type"))
+ , _annotation_text (node->optional_string_child("AnnotationText"))
+ , _hash (node->string_child("Hash"))
+ , _size (node->number_child<int64_t>("Size"))
+ , _type (node->string_child("Type"))
{}
- Asset (std::string id_, boost::optional<std::string> annotation_text_, std::string hash_, int64_t size_, std::string type_)
- : Object (id_)
- , annotation_text (annotation_text_)
- , hash (hash_)
- , size (size_)
- , type (type_)
+ Asset (std::string id, boost::optional<std::string> annotation_text, std::string hash, int64_t size, std::string type)
+ : Object (id)
+ , _annotation_text (annotation_text)
+ , _hash (hash)
+ , _size (size)
+ , _type (type)
{}
- boost::optional<std::string> annotation_text;
- std::string hash;
- int64_t size;
- std::string type;
+ boost::optional<std::string> annotation_text () const {
+ return _annotation_text;
+ }
+
+ std::string hash () const {
+ return _hash;
+ }
+
+ int64_t size () const {
+ return _size;
+ }
+
+ std::string type () const {
+ return _type;
+ }
+
+ private:
+ boost::optional<std::string> _annotation_text;
+ std::string _hash;
+ int64_t _size;
+ std::string _type;
};
+ std::vector<std::shared_ptr<Asset>> asset_list () const {
+ return _asset_list;
+ }
+
+private:
+
Standard _standard;
boost::optional<std::string> _annotation_text;
std::string _issue_date;