Manage loan tokens

This commit is contained in:
2022-04-03 09:32:06 +02:00
parent 2e7e352e35
commit 570ad83747
8 changed files with 207 additions and 8 deletions

View File

@@ -24,7 +24,7 @@
namespace gourou
{
FulfillmentItem::FulfillmentItem(pugi::xml_document& doc, User* user)
: fulfillDoc()
: fulfillDoc(), loanToken(0)
{
fulfillDoc.reset(doc); /* We must keep a copy */
metadatas = fulfillDoc.select_node("//metadata").node();
@@ -50,8 +50,25 @@ namespace gourou
EXCEPTION(FFI_INVALID_FULFILLMENT_DATA, "Any license token in document");
buildRights(licenseToken, user);
node = doc.select_node("/envelope/fulfillmentResult/returnable").node();
try
{
if (node && node.first_child().value() == std::string("true"))
loanToken = new LoanToken(doc);
}
catch(std::exception& e)
{
GOUROU_LOG(ERROR, "Book is returnable, but contains invalid loan token");
GOUROU_LOG(ERROR, e.what());
}
}
FulfillmentItem::~FulfillmentItem()
{
if (loanToken) delete loanToken;
}
void FulfillmentItem::buildRights(const pugi::xml_node& licenseToken, User* user)
{
pugi::xml_node decl = rights.append_child(pugi::node_declaration);
@@ -103,4 +120,9 @@ namespace gourou
{
return resource;
}
LoanToken* FulfillmentItem::getLoanToken()
{
return loanToken;
}
}