Better CWMP fault structure

Resolves: #78
This commit is contained in:
Zaid Abdulla committed 2016-12-07 13:01:31 -08:00
1 parent 34de9c7e7d
commit bc1f6311a0
2 files changed
+34 -20

No files matched your search

+6 -6
View File
@@ -168,14 +168,14 @@ transferComplete = (sessionData, rpcReq, callback) ->
sessionData.operationsTouched ?= {}
sessionData.operationsTouched[commandKey] = 1
if rpcReq.faultStruct? and rpcReq.faultStruct.FaultCode != '0'
if rpcReq.faultStruct? and rpcReq.faultStruct.faultCode != '0'
return revertDownloadParameters(sessionData, operation.args.instance, (err) ->
for channel, provisions of operation.provisions
faults[channel] = {
provisions: provisions
timestamp: sessionData.timestamp
code: "cwmp.#{rpcReq.faultStruct['FaultCode']}"
message: rpcReq.faultStruct['FaultString']
code: "cwmp.#{rpcReq.faultStruct.faultCode}"
message: rpcReq.faultStruct.faultString
detail: rpcReq.faultStruct
}
@@ -1546,9 +1546,9 @@ rpcFault = (sessionData, id, faultResponse, callback) ->
fault = {
provisions: []
timestamp: sessionData.timestamp
code: "cwmp.#{faultResponse.detail.Fault['FaultCode']}"
message: faultResponse.detail.Fault['FaultString']
detail: faultResponse.detail.Fault
code: "cwmp.#{faultResponse.detail.faultCode}"
message: faultResponse.detail.faultString
detail: faultResponse.detail
}
if sessionData.faults[channel]?
+28 -14
View File
@@ -238,7 +238,12 @@ cpeDownloadResponse = (xml) ->
acsInform = (xml) ->
{
parameterList : parameterValueList(xml.get('ParameterList')),
deviceId : traverseXml(xml.get('DeviceId')),
deviceId : {
'Manufacturer' : xml.get('DeviceId/Manufacturer').text(),
'OUI' : xml.get('DeviceId/OUI').text(),
'ProductClass' : xml.get('DeviceId/ProductClass').text(),
'SerialNumber' : xml.get('DeviceId/SerialNumber').text()
}
event : event(xml.get('Event')),
retryCount : parseInt(xml.get('RetryCount').text())
}
@@ -262,7 +267,7 @@ acsGetRPCMethodsResponse = (xml, methodResponse) ->
acsTransferComplete = (xml) ->
{
commandKey : xml.get('CommandKey').text(),
faultStruct : traverseXml(xml.get('FaultStruct')),
faultStruct : faultStruct(xml.get('FaultStruct')),
startTime : Date.parse(xml.get('StartTime').text()),
completeTime : Date.parse(xml.get('CompleteTime').text())
}
@@ -283,20 +288,29 @@ acsRequestDownloadResponse = (xml, methodResponse) ->
xml.node('cwmp:RequestDownloadResponse').text('')
traverseXml = (xml) ->
obj = {}
for n in xml.childNodes()
if n.type() == 'element'
obj[n.name()] = traverseXml(n)
faultStruct = (xml) ->
f = {
faultCode: xml.get('FaultCode').text(),
faultString: xml.get('FaultString').text()
}
if Object.keys(obj).length == 0
xml.text()
else
obj
for e in xml.find('SetParameterValuesFault')
f.setParameterValuesFault ?= []
f.setParameterValuesFault.push({
parameterName: e.get('ParameterName').text(),
faultCode: e.get('FaultCode').text(),
faultString: e.get('FaultString').text()
})
return f
fault = (xml) ->
return traverseXml(xml)
fault = (xml, cwmpVersion) ->
{
faultCode: xml.get('faultcode').text(),
faultString: xml.get('faultstring').text(),
detail: faultStruct(xml.get('detail/cwmp:Fault', NAMESPACES[cwmpVersion]))
}
exports.request = (httpRequest, cwmpVersion) ->
@@ -374,7 +388,7 @@ exports.request = (httpRequest, cwmpVersion) ->
throw Error('8000 Method not supported ' + methodElement.name())
else
faultElement = xml.get('/soap-env:Envelope/soap-env:Body/soap-env:Fault', NAMESPACES[cwmpRequest.cwmpVersion])
cwmpRequest.fault = fault(faultElement)
cwmpRequest.fault = fault(faultElement, cwmpRequest.cwmpVersion)
return cwmpRequest