Implement API to delete faults

This commit is contained in:
Zaid Abdulla committed 2016-08-23 21:01:56 -07:00
1 parent 62fca64268
commit 96286b9d10
1 file changed
+25
+25
View File
@@ -60,6 +60,7 @@ QUERY_REGEX = /^\/([a-zA-Z0-9_]+s)\/?$/
DELETE_DEVICE_REGEX = /^\/devices\/([a-zA-Z0-9\-\_\%]+)\/?$/ DELETE_DEVICE_REGEX = /^\/devices\/([a-zA-Z0-9\-\_\%]+)\/?$/
PROVISIONS_REGEX = /^\/provisions\/([a-zA-Z0-9\-\_\%]+)\/?$/ PROVISIONS_REGEX = /^\/provisions\/([a-zA-Z0-9\-\_\%]+)\/?$/
VIRTUAL_PARAMETERS_REGEX = /^\/virtual_parameters\/([a-zA-Z0-9\-\_\%]+)\/?$/ VIRTUAL_PARAMETERS_REGEX = /^\/virtual_parameters\/([a-zA-Z0-9\-\_\%]+)\/?$/
FAULTS_REGEX = /^\/faults\/([a-zA-Z0-9\-\_\%\:]+)\/?$/
errorToString = (err) -> errorToString = (err) ->
@@ -250,6 +251,25 @@ listener = (request, response) ->
else else
response.writeHead 405, {'Allow': 'POST, DELETE'} response.writeHead 405, {'Allow': 'POST, DELETE'}
response.end('405 Method Not Allowed') response.end('405 Method Not Allowed')
else if FAULTS_REGEX.test(urlParts.pathname)
if request.method == 'DELETE'
faultId = querystring.unescape(FAULTS_REGEX.exec(urlParts.pathname)[1])
deviceId = faultId.split(':', 1)
channel = faultId.slice(deviceId + 1)
db.redisClient.del("#{deviceId}_faults", (err) ->
db.faultsCollection.remove({_id : faultId}, (err) ->
throw err if err
if channel.startsWith('_task_')
return db.tasksCollection.remove({_id : mongodb.ObjectID(channel.slice(6))}, (err) ->
throw err if err
)
response.writeHead(200)
response.end()
)
)
else
response.writeHead 405, {'Allow': 'DELETE'}
response.end('405 Method Not Allowed')
else if DEVICE_TASKS_REGEX.test(urlParts.pathname) else if DEVICE_TASKS_REGEX.test(urlParts.pathname)
if request.method == 'POST' if request.method == 'POST'
deviceId = querystring.unescape(DEVICE_TASKS_REGEX.exec(urlParts.pathname)[1]) deviceId = querystring.unescape(DEVICE_TASKS_REGEX.exec(urlParts.pathname)[1])
@@ -453,6 +473,11 @@ listener = (request, response) ->
timestamp: ((v) -> return new Date(v)) timestamp: ((v) -> return new Date(v))
retries: Number retries: Number
}) })
when 'faults'
q = query.sanitizeQueryTypes(q, {
timestamp: ((v) -> return new Date(v))
retries: Number
})
if urlParts.query.projection? if urlParts.query.projection?
projection = {} projection = {}