Allow querying versionTime exact match with second precision

main
Charles E. Lehner 4 years ago
parent a6fa28b538
commit 12e3d42266
Signed by: cel
GPG Key ID: C28D95BB012367EA

@ -54,7 +54,7 @@ const dereferencerInputs = [
dereferenceOptions: {}
},
{
didUrl: 'did:ssb:ed25519:f_6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU?versionTime=2021-07-24T03:38:46Z',
didUrl: 'did:ssb:ed25519:f_6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU?versionTime=2021-07-24T03:38:45Z',
dereferenceOptions: {}
}
];

@ -16,6 +16,7 @@ const didRe = /^did:ssb:(ed25519):([0-9a-zA-Z._\-]+)$/;
const didUrlRe = /^(did:[^?#\/]*)(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
const ssbRefRe = /^(@|%|&)([A-Za-z0-9\/+]{43}=)\.([\w\d]+)$/;
const ssbMsgIdRe = /^%[A-Za-z0-9\/+]{43}=\.[\w\d]+$/;
const dateTimeRe = /^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ$/;
function parseDIDURL(uri) {
const m = didUrlRe.exec(uri);
@ -100,7 +101,9 @@ Resolver.prototype.resolveOrResolveRepresentation = function (did, resolutionOpt
gotLatestMessage();
});
} else if (versionTime) {
if (!dateTimeRe.test(versionTime)) return cb({error: 'invalidVersionTime'}, Null, {});
const versionDate = new Date(versionTime);
const timestampQuery = {$lte: versionDate.getTime() + 1000};
// 5
pull(
self.sbot.query.read({
@ -111,7 +114,7 @@ Resolver.prototype.resolveOrResolveRepresentation = function (did, resolutionOpt
value: {
author: feedId,
content: {type: 'did-document-update'},
timestamp: {$lte: versionDate.getTime()}
timestamp: timestampQuery
}
}}
]

Loading…
Cancel
Save