@eluvio/elv-client-js 4.2.4 → 4.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ElvClient-min.js +1 -1
- package/dist/ElvClient-node-min.js +1 -1
- package/dist/ElvFrameClient-min.js +1 -1
- package/dist/ElvPermissionsClient-min.js +1 -1
- package/dist/ElvWalletClient-min.js +1 -1
- package/dist/ElvWalletClient-node-min.js +1 -1
- package/dist/src/AuthorizationClient.js +710 -709
- package/dist/src/ContentObjectAudit.js +56 -56
- package/dist/src/ContentObjectVerification.js +281 -0
- package/dist/src/Crypto.js +85 -85
- package/dist/src/ElvClient.js +499 -529
- package/dist/src/ElvWallet.js +28 -30
- package/dist/src/EthClient.js +311 -311
- package/dist/src/FrameClient.js +64 -63
- package/dist/src/HttpClient.js +60 -60
- package/dist/src/Id.js +2 -1
- package/dist/src/PermissionsClient.js +487 -499
- package/dist/src/RemoteSigner.js +83 -82
- package/dist/src/UserProfileClient.js +374 -392
- package/dist/src/Utils.js +66 -69
- package/dist/src/Validation.js +10 -10
- package/dist/src/client/ABRPublishing.js +238 -238
- package/dist/src/client/AccessGroups.js +474 -477
- package/dist/src/client/ContentAccess.js +1709 -1705
- package/dist/src/client/ContentManagement.js +871 -871
- package/dist/src/client/Contracts.js +578 -575
- package/dist/src/client/Files.js +684 -700
- package/dist/src/client/LiveConf.js +3 -1
- package/dist/src/client/LiveStream.js +693 -694
- package/dist/src/client/NFT.js +14 -14
- package/dist/src/client/NTP.js +84 -84
- package/dist/src/client/Shares.js +60 -53
- package/dist/src/walletClient/ClientMethods.js +951 -977
- package/dist/src/walletClient/Notifications.js +14 -14
- package/dist/src/walletClient/Profile.js +66 -66
- package/dist/src/walletClient/Utils.js +15 -15
- package/dist/src/walletClient/index.js +562 -572
- package/package.json +1 -1
- package/src/Utils.js +1 -4
- package/src/client/ABRPublishing.js +1 -1
- package/src/client/LiveStream.js +77 -50
|
@@ -11,9 +11,9 @@ var _require = require("./Validation"),
|
|
|
11
11
|
ValidateParameters = _require.ValidateParameters;
|
|
12
12
|
var ContentObjectAudit = {
|
|
13
13
|
AuditContentObject: function AuditContentObject(_ref) {
|
|
14
|
-
return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
15
|
-
var client, libraryId, objectId, versionHash, salt, samples, _ref$live, live, authorizationToken, queryParams, uris, httpClient, path, responses, auditHash, verified, audits, _iterator, _step, response, url, audit, res
|
|
16
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
14
|
+
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
15
|
+
var client, libraryId, objectId, versionHash, salt, samples, _ref$live, live, authorizationToken, queryParams, uris, httpClient, path, responses, auditHash, verified, audits, _iterator, _step, response, url, audit, res;
|
|
16
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
17
17
|
while (1) switch (_context.prev = _context.next) {
|
|
18
18
|
case 0:
|
|
19
19
|
client = _ref.client, libraryId = _ref.libraryId, objectId = _ref.objectId, versionHash = _ref.versionHash, salt = _ref.salt, samples = _ref.samples, _ref$live = _ref.live, live = _ref$live === void 0 ? false : _ref$live, authorizationToken = _ref.authorizationToken;
|
|
@@ -30,16 +30,16 @@ var ContentObjectAudit = {
|
|
|
30
30
|
objectId = client.utils.DecodeVersionHash(versionHash).objectId;
|
|
31
31
|
}
|
|
32
32
|
if (libraryId) {
|
|
33
|
-
_context.next =
|
|
33
|
+
_context.next = 9;
|
|
34
34
|
break;
|
|
35
35
|
}
|
|
36
|
-
_context.next =
|
|
36
|
+
_context.next = 8;
|
|
37
37
|
return client.ContentObjectLibraryId({
|
|
38
38
|
objectId: objectId
|
|
39
39
|
});
|
|
40
|
-
case
|
|
40
|
+
case 8:
|
|
41
41
|
libraryId = _context.sent;
|
|
42
|
-
case
|
|
42
|
+
case 9:
|
|
43
43
|
ValidateParameters({
|
|
44
44
|
libraryId: libraryId,
|
|
45
45
|
objectId: objectId,
|
|
@@ -54,64 +54,64 @@ var ContentObjectAudit = {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
// Test against the node the client is currently using, plus a batch of fresh nodes
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
_context.next =
|
|
57
|
+
_context.t0 = [client.HttpClient.uris[client.HttpClient.uriIndex]];
|
|
58
|
+
_context.t1 = _toConsumableArray;
|
|
59
|
+
_context.next = 16;
|
|
60
60
|
return client.Configuration({
|
|
61
61
|
configUrl: client.configUrl,
|
|
62
62
|
clientIP: client.clientIP,
|
|
63
63
|
region: client.region
|
|
64
64
|
});
|
|
65
|
-
case
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
uris =
|
|
65
|
+
case 16:
|
|
66
|
+
_context.t2 = _context.sent.fabricURIs;
|
|
67
|
+
_context.t3 = (0, _context.t1)(_context.t2);
|
|
68
|
+
uris = _context.t0.concat.call(_context.t0, _context.t3).filter(function (v, i, s) {
|
|
69
69
|
return s.indexOf(v) === i;
|
|
70
70
|
});
|
|
71
71
|
httpClient = new HttpClient({
|
|
72
72
|
uris: uris
|
|
73
73
|
});
|
|
74
74
|
path = UrlJoin("qlibs", libraryId, "q", versionHash || objectId, live ? "call/live/audit" : "audit");
|
|
75
|
-
|
|
75
|
+
_context.t4 = httpClient;
|
|
76
76
|
if (!authorizationToken) {
|
|
77
|
-
_context.next =
|
|
77
|
+
_context.next = 26;
|
|
78
78
|
break;
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
_context.t5 = {
|
|
81
81
|
Authorization: "Bearer ".concat(authorizationToken)
|
|
82
82
|
};
|
|
83
|
-
_context.next =
|
|
83
|
+
_context.next = 29;
|
|
84
84
|
break;
|
|
85
|
-
case
|
|
86
|
-
_context.next =
|
|
85
|
+
case 26:
|
|
86
|
+
_context.next = 28;
|
|
87
87
|
return client.authClient.AuthorizationHeader({
|
|
88
88
|
libraryId: libraryId,
|
|
89
89
|
objectId: objectId,
|
|
90
90
|
versionHash: versionHash
|
|
91
91
|
});
|
|
92
|
-
case
|
|
93
|
-
|
|
94
|
-
case
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
headers:
|
|
100
|
-
queryParams:
|
|
92
|
+
case 28:
|
|
93
|
+
_context.t5 = _context.sent;
|
|
94
|
+
case 29:
|
|
95
|
+
_context.t6 = _context.t5;
|
|
96
|
+
_context.t7 = queryParams;
|
|
97
|
+
_context.t8 = path;
|
|
98
|
+
_context.t9 = {
|
|
99
|
+
headers: _context.t6,
|
|
100
|
+
queryParams: _context.t7,
|
|
101
101
|
method: "GET",
|
|
102
|
-
path:
|
|
102
|
+
path: _context.t8
|
|
103
103
|
};
|
|
104
|
-
_context.next =
|
|
105
|
-
return
|
|
106
|
-
case
|
|
104
|
+
_context.next = 35;
|
|
105
|
+
return _context.t4.RequestAll.call(_context.t4, _context.t9);
|
|
106
|
+
case 35:
|
|
107
107
|
responses = _context.sent;
|
|
108
108
|
audits = [];
|
|
109
109
|
_iterator = _createForOfIteratorHelper(responses);
|
|
110
|
-
_context.prev =
|
|
110
|
+
_context.prev = 38;
|
|
111
111
|
_iterator.s();
|
|
112
|
-
case
|
|
112
|
+
case 40:
|
|
113
113
|
if ((_step = _iterator.n()).done) {
|
|
114
|
-
_context.next =
|
|
114
|
+
_context.next = 57;
|
|
115
115
|
break;
|
|
116
116
|
}
|
|
117
117
|
response = _step.value;
|
|
@@ -120,17 +120,17 @@ var ContentObjectAudit = {
|
|
|
120
120
|
host: url.hostname
|
|
121
121
|
};
|
|
122
122
|
if (response.ok) {
|
|
123
|
-
_context.next =
|
|
123
|
+
_context.next = 49;
|
|
124
124
|
break;
|
|
125
125
|
}
|
|
126
126
|
audit.error = response;
|
|
127
127
|
audit.errorMessage = response.message || JSON.stringify(response);
|
|
128
|
-
_context.next =
|
|
128
|
+
_context.next = 54;
|
|
129
129
|
break;
|
|
130
|
-
case
|
|
131
|
-
_context.next =
|
|
130
|
+
case 49:
|
|
131
|
+
_context.next = 51;
|
|
132
132
|
return client.utils.ResponseToJson(response);
|
|
133
|
-
case
|
|
133
|
+
case 51:
|
|
134
134
|
res = _context.sent;
|
|
135
135
|
if (auditHash === undefined) {
|
|
136
136
|
auditHash = res.audit_hash;
|
|
@@ -140,23 +140,23 @@ var ContentObjectAudit = {
|
|
|
140
140
|
verified = true;
|
|
141
141
|
}
|
|
142
142
|
audit.audit_hash = res.audit_hash;
|
|
143
|
-
case
|
|
143
|
+
case 54:
|
|
144
144
|
audits.push(audit);
|
|
145
|
-
case
|
|
146
|
-
_context.next =
|
|
145
|
+
case 55:
|
|
146
|
+
_context.next = 40;
|
|
147
147
|
break;
|
|
148
|
-
case
|
|
149
|
-
_context.next =
|
|
148
|
+
case 57:
|
|
149
|
+
_context.next = 62;
|
|
150
150
|
break;
|
|
151
|
-
case
|
|
152
|
-
_context.prev =
|
|
153
|
-
|
|
154
|
-
_iterator.e(
|
|
155
|
-
case
|
|
156
|
-
_context.prev =
|
|
151
|
+
case 59:
|
|
152
|
+
_context.prev = 59;
|
|
153
|
+
_context.t10 = _context["catch"](38);
|
|
154
|
+
_iterator.e(_context.t10);
|
|
155
|
+
case 62:
|
|
156
|
+
_context.prev = 62;
|
|
157
157
|
_iterator.f();
|
|
158
|
-
return _context.finish(
|
|
159
|
-
case
|
|
158
|
+
return _context.finish(62);
|
|
159
|
+
case 65:
|
|
160
160
|
verified = verified || false;
|
|
161
161
|
return _context.abrupt("return", {
|
|
162
162
|
verified: verified,
|
|
@@ -164,11 +164,11 @@ var ContentObjectAudit = {
|
|
|
164
164
|
samples: samples,
|
|
165
165
|
audits: audits
|
|
166
166
|
});
|
|
167
|
-
case
|
|
167
|
+
case 67:
|
|
168
168
|
case "end":
|
|
169
169
|
return _context.stop();
|
|
170
170
|
}
|
|
171
|
-
}, _callee, null, [[
|
|
171
|
+
}, _callee, null, [[38, 59, 62, 65]]);
|
|
172
172
|
}))();
|
|
173
173
|
}
|
|
174
174
|
};
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
var _regeneratorRuntime = require("@babel/runtime/regenerator");
|
|
2
|
+
var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator");
|
|
3
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
4
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
|
+
var CBOR = require("cbor");
|
|
7
|
+
var SJCL = require("sjcl");
|
|
8
|
+
var MultiHash = require("multihashes");
|
|
9
|
+
var DeepEqual = require("deep-equal");
|
|
10
|
+
var Utils = require("./Utils");
|
|
11
|
+
var ContentObjectVerification = {
|
|
12
|
+
VerifyContentObject: function VerifyContentObject(_ref) {
|
|
13
|
+
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
14
|
+
var client, libraryId, objectId, versionHash, response, partHash, qpartsResponse, partVerification, qmdHash, metadataPartHash, metadataPartResponse, metadataVerification, metadata, qstructHash, structPartHash, structPartResponse, structVerification;
|
|
15
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
16
|
+
while (1) switch (_context.prev = _context.next) {
|
|
17
|
+
case 0:
|
|
18
|
+
client = _ref.client, libraryId = _ref.libraryId, objectId = _ref.objectId, versionHash = _ref.versionHash;
|
|
19
|
+
response = {
|
|
20
|
+
hash: versionHash
|
|
21
|
+
};
|
|
22
|
+
partHash = Utils.DecodeVersionHash(versionHash).partHash;
|
|
23
|
+
_context.next = 5;
|
|
24
|
+
return client.QParts({
|
|
25
|
+
libraryId: libraryId,
|
|
26
|
+
objectId: objectId,
|
|
27
|
+
partHash: partHash,
|
|
28
|
+
format: "arrayBuffer"
|
|
29
|
+
}).then(function (response) {
|
|
30
|
+
return Buffer.from(response);
|
|
31
|
+
});
|
|
32
|
+
case 5:
|
|
33
|
+
qpartsResponse = _context.sent;
|
|
34
|
+
partVerification = ContentObjectVerification._VerifyPart({
|
|
35
|
+
partHash: partHash,
|
|
36
|
+
qpartsResponse: qpartsResponse
|
|
37
|
+
});
|
|
38
|
+
if (partVerification.valid) {
|
|
39
|
+
response.qref = {
|
|
40
|
+
valid: true
|
|
41
|
+
};
|
|
42
|
+
} else {
|
|
43
|
+
response.qref = {
|
|
44
|
+
valid: false,
|
|
45
|
+
error: partVerification.error.message
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
response.qref.hash = partHash;
|
|
49
|
+
if (!response.qref.valid) {
|
|
50
|
+
_context.next = 32;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
// Validate Metadata
|
|
54
|
+
qmdHash = partVerification.cbor.QmdHash.value;
|
|
55
|
+
metadataPartHash = "hqp_" + MultiHash.toB58String(qmdHash.slice(1, qmdHash.length));
|
|
56
|
+
_context.next = 14;
|
|
57
|
+
return client.QParts({
|
|
58
|
+
libraryId: libraryId,
|
|
59
|
+
objectId: objectId,
|
|
60
|
+
partHash: metadataPartHash,
|
|
61
|
+
format: "arrayBuffer"
|
|
62
|
+
}).then(function (response) {
|
|
63
|
+
return Buffer.from(response);
|
|
64
|
+
});
|
|
65
|
+
case 14:
|
|
66
|
+
metadataPartResponse = _context.sent;
|
|
67
|
+
metadataVerification = ContentObjectVerification._VerifyPart({
|
|
68
|
+
partHash: metadataPartHash,
|
|
69
|
+
qpartsResponse: metadataPartResponse
|
|
70
|
+
});
|
|
71
|
+
if (metadataVerification.valid) {
|
|
72
|
+
response.qmd = {
|
|
73
|
+
valid: true
|
|
74
|
+
};
|
|
75
|
+
} else {
|
|
76
|
+
response.qmd = {
|
|
77
|
+
valid: false,
|
|
78
|
+
error: metadataVerification.error.message
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
response.qmd.hash = metadataPartHash;
|
|
82
|
+
if (!(response.qmd.valid && libraryId)) {
|
|
83
|
+
_context.next = 23;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
_context.next = 21;
|
|
87
|
+
return client.ContentObjectMetadata({
|
|
88
|
+
libraryId: libraryId,
|
|
89
|
+
objectId: objectId,
|
|
90
|
+
versionHash: partHash.replace("hqp_", "hq__")
|
|
91
|
+
});
|
|
92
|
+
case 21:
|
|
93
|
+
metadata = _context.sent;
|
|
94
|
+
response.qmd.check = ContentObjectVerification._VerifyMetadata({
|
|
95
|
+
metadataCbor: metadataVerification.cbor,
|
|
96
|
+
metadata: metadata
|
|
97
|
+
});
|
|
98
|
+
case 23:
|
|
99
|
+
// Validate Qstruct
|
|
100
|
+
qstructHash = partVerification.cbor.QstructHash.value;
|
|
101
|
+
structPartHash = "hqp_" + MultiHash.toB58String(qstructHash.slice(1, qstructHash.length));
|
|
102
|
+
_context.next = 27;
|
|
103
|
+
return client.QParts({
|
|
104
|
+
libraryId: libraryId,
|
|
105
|
+
objectId: objectId,
|
|
106
|
+
partHash: structPartHash,
|
|
107
|
+
format: "arrayBuffer"
|
|
108
|
+
}).then(function (response) {
|
|
109
|
+
return Buffer.from(response);
|
|
110
|
+
});
|
|
111
|
+
case 27:
|
|
112
|
+
structPartResponse = _context.sent;
|
|
113
|
+
structVerification = ContentObjectVerification._VerifyPart({
|
|
114
|
+
partHash: structPartHash,
|
|
115
|
+
qpartsResponse: structPartResponse
|
|
116
|
+
});
|
|
117
|
+
if (structVerification.valid) {
|
|
118
|
+
response.qstruct = {
|
|
119
|
+
valid: true
|
|
120
|
+
};
|
|
121
|
+
} else {
|
|
122
|
+
response.qstruct = {
|
|
123
|
+
valid: false,
|
|
124
|
+
error: structVerification.error.message
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
response.qstruct.hash = structPartHash;
|
|
128
|
+
if (response.qstruct.valid) {
|
|
129
|
+
response.qstruct.parts = ContentObjectVerification._FormatQStruct(structVerification.cbor.Parts);
|
|
130
|
+
}
|
|
131
|
+
case 32:
|
|
132
|
+
response.valid = response.qref.valid && response.qmd.valid && response.qstruct.valid && (!response.qmd.check || response.qmd.check.valid);
|
|
133
|
+
return _context.abrupt("return", response);
|
|
134
|
+
case 34:
|
|
135
|
+
case "end":
|
|
136
|
+
return _context.stop();
|
|
137
|
+
}
|
|
138
|
+
}, _callee);
|
|
139
|
+
}))();
|
|
140
|
+
},
|
|
141
|
+
// Content verification methods //
|
|
142
|
+
_FormatQStruct: function _FormatQStruct(structParts) {
|
|
143
|
+
if (!structParts) {
|
|
144
|
+
return [];
|
|
145
|
+
}
|
|
146
|
+
return structParts.map(function (structPart) {
|
|
147
|
+
return {
|
|
148
|
+
hash: "hqp_" + MultiHash.toB58String(structPart.Hash.value.slice(1, structPart.Hash.length)),
|
|
149
|
+
size: structPart.Size
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
_Hash: function _Hash(thing) {
|
|
154
|
+
function fromBits(arr) {
|
|
155
|
+
var out = [],
|
|
156
|
+
bl = SJCL.bitArray.bitLength(arr),
|
|
157
|
+
i,
|
|
158
|
+
tmp;
|
|
159
|
+
for (i = 0; i < bl / 8; i++) {
|
|
160
|
+
if ((i & 3) === 0) {
|
|
161
|
+
tmp = arr[i / 4];
|
|
162
|
+
}
|
|
163
|
+
out.push(tmp >>> 24);
|
|
164
|
+
tmp <<= 8;
|
|
165
|
+
}
|
|
166
|
+
return out;
|
|
167
|
+
}
|
|
168
|
+
function toBits(bytes) {
|
|
169
|
+
var out = [],
|
|
170
|
+
i,
|
|
171
|
+
tmp = 0;
|
|
172
|
+
for (i = 0; i < bytes.length; i++) {
|
|
173
|
+
tmp = tmp << 8 | bytes[i];
|
|
174
|
+
if ((i & 3) === 3) {
|
|
175
|
+
out.push(tmp);
|
|
176
|
+
tmp = 0;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (i & 3) {
|
|
180
|
+
out.push(SJCL.bitArray.partial(8 * (i & 3), tmp));
|
|
181
|
+
}
|
|
182
|
+
return out;
|
|
183
|
+
}
|
|
184
|
+
var digest = SJCL.hash.sha256.hash(toBits(thing));
|
|
185
|
+
var bytes = fromBits(digest);
|
|
186
|
+
var out = Buffer.from(bytes, "binary");
|
|
187
|
+
return MultiHash.toB58String(MultiHash.encode(out, "sha2-256"));
|
|
188
|
+
},
|
|
189
|
+
_ParseCBOR: function _ParseCBOR(cborResponse) {
|
|
190
|
+
var buffer = cborResponse.slice(7, cborResponse.length);
|
|
191
|
+
var hex = buffer.toString("hex");
|
|
192
|
+
return CBOR.decodeFirstSync(hex);
|
|
193
|
+
},
|
|
194
|
+
_VerifyPart: function _VerifyPart(_ref2) {
|
|
195
|
+
var partHash = _ref2.partHash,
|
|
196
|
+
qpartsResponse = _ref2.qpartsResponse;
|
|
197
|
+
try {
|
|
198
|
+
if (ContentObjectVerification._Hash(qpartsResponse) !== partHash.replace("hqp_", "")) {
|
|
199
|
+
throw Error("Hashes do not match");
|
|
200
|
+
}
|
|
201
|
+
var cbor = ContentObjectVerification._ParseCBOR(qpartsResponse);
|
|
202
|
+
return {
|
|
203
|
+
valid: true,
|
|
204
|
+
cbor: cbor
|
|
205
|
+
};
|
|
206
|
+
} catch (error) {
|
|
207
|
+
return {
|
|
208
|
+
valid: false,
|
|
209
|
+
error: error
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
_VerifyMetadata: function _VerifyMetadata(_ref3) {
|
|
214
|
+
var metadataCbor = _ref3.metadataCbor,
|
|
215
|
+
metadata = _ref3.metadata;
|
|
216
|
+
if (!metadataCbor) {
|
|
217
|
+
metadataCbor = {};
|
|
218
|
+
}
|
|
219
|
+
if (!metadata) {
|
|
220
|
+
metadata = {};
|
|
221
|
+
}
|
|
222
|
+
var response = {
|
|
223
|
+
valid: true,
|
|
224
|
+
invalidValues: []
|
|
225
|
+
};
|
|
226
|
+
var cborKeys = Object.keys(metadataCbor);
|
|
227
|
+
var metadataKeys = Object.keys(metadata);
|
|
228
|
+
|
|
229
|
+
// Find any difference between top level keys
|
|
230
|
+
var differentKeys = cborKeys.filter(function (x) {
|
|
231
|
+
return !metadataKeys.includes(x);
|
|
232
|
+
}).concat(metadataKeys.filter(function (x) {
|
|
233
|
+
return !cborKeys.includes(x);
|
|
234
|
+
}));
|
|
235
|
+
var _iterator = _createForOfIteratorHelper(differentKeys),
|
|
236
|
+
_step;
|
|
237
|
+
try {
|
|
238
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
239
|
+
var key = _step.value;
|
|
240
|
+
var cborValue = metadataCbor[key];
|
|
241
|
+
var metadataValue = metadata[key];
|
|
242
|
+
response.invalidValues.push({
|
|
243
|
+
key: key,
|
|
244
|
+
cborValue: cborValue,
|
|
245
|
+
metadataValue: metadataValue
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Deep comparison of up to 5 keys
|
|
250
|
+
} catch (err) {
|
|
251
|
+
_iterator.e(err);
|
|
252
|
+
} finally {
|
|
253
|
+
_iterator.f();
|
|
254
|
+
}
|
|
255
|
+
var _iterator2 = _createForOfIteratorHelper(Object.keys(metadataCbor).slice(0, 5)),
|
|
256
|
+
_step2;
|
|
257
|
+
try {
|
|
258
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
259
|
+
var fieldToValidate = _step2.value;
|
|
260
|
+
var _cborValue = metadataCbor[fieldToValidate];
|
|
261
|
+
var _metadataValue = metadata[fieldToValidate];
|
|
262
|
+
if (!DeepEqual(_cborValue, _metadataValue)) {
|
|
263
|
+
response.invalidValues.push({
|
|
264
|
+
key: fieldToValidate,
|
|
265
|
+
cborValue: _cborValue,
|
|
266
|
+
metadataValue: _metadataValue
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
} catch (err) {
|
|
271
|
+
_iterator2.e(err);
|
|
272
|
+
} finally {
|
|
273
|
+
_iterator2.f();
|
|
274
|
+
}
|
|
275
|
+
if (response.invalidValues.length !== 0) {
|
|
276
|
+
response.valid = false;
|
|
277
|
+
}
|
|
278
|
+
return response;
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
module.exports = ContentObjectVerification;
|