Gracefully handle invalid dateTime param values
This commit is contained in:
1 parent
dc5c12c8ce
commit
0d9ca3486b
3 files changed
+11
-7
No files matched your search
+1
-1
@@ -407,7 +407,7 @@ saveDevice = (deviceId, deviceData, isNew, callback) ->
|
||||
switch attrName
|
||||
when 'value'
|
||||
if not diff[1] or diff[2].value[1][0] != diff[1].value?[1][0]
|
||||
if diff[2].value[1][1] == 'xsd:dateTime'
|
||||
if diff[2].value[1][1] == 'xsd:dateTime' and Number.isInteger(diff[2].value[1][0])
|
||||
update['$set'][path.concat('_value').join('.')] = new Date(diff[2].value[1][0])
|
||||
else
|
||||
update['$set'][path.concat('_value').join('.')] = diff[2].value[1][0]
|
||||
|
||||
+7
-6
@@ -49,12 +49,13 @@ function sanitizeParameterValue(parameterValue) {
|
||||
break;
|
||||
case 'xsd:dateTime':
|
||||
if (typeof parameterValue[0] !== 'number') {
|
||||
if (parameterValue[0].getTime() != null)
|
||||
parameterValue[0] = parameterValue[0].getTime();
|
||||
else if (isNaN(parameterValue[0]))
|
||||
parameterValue[0] = Date.parse(parameterValue[0]);
|
||||
else
|
||||
parameterValue[0] = +parameterValue[0];
|
||||
let v = +parameterValue[0];
|
||||
if (isNaN(v)) {
|
||||
v = Date.parse(parameterValue[0]);
|
||||
if (isNaN(v))
|
||||
v = '' + parameterValue[0];
|
||||
}
|
||||
parameterValue[0] = v;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -210,6 +210,9 @@ function SetParameterValues(xml, methodRequest) {
|
||||
for (const p of methodRequest.parameterList) {
|
||||
const pvs = paramList.node("ParameterValueStruct");
|
||||
pvs.node("Name").text(p[0]);
|
||||
if (p[2] === 'xsd:dateTime' && Number.isInteger(p[1]))
|
||||
pvs.node("Value").attr({"xsi:type": p[2]}).text((new Date(p[1])).toISOString());
|
||||
else
|
||||
pvs.node("Value").attr({"xsi:type": p[2]}).text(p[1]);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user