Implement support for download RPC

This uses special parameters (Downloads.) to trigger file download
making it poossible to use from scripts declaratively.

Resolves: #171
This commit is contained in:
Zaid Abdulla committed 2016-11-30 16:27:01 -08:00
1 parent 5cade39ba2
commit 3d221afc27
8 files changed
+584 -83

No files matched your search

+35 -2
View File
@@ -31,6 +31,7 @@ hash = null
presets = null
provisions = null
virtualParameters = null
files = null
UNLOCK_SCRIPT = 'if redis.call("get", KEYS[1]) == ARGV[1] then return redis.call("del", KEYS[1]) else return 0 end'
@@ -91,7 +92,7 @@ refresh = (callback) ->
return callback()
lock('presets_hash_lock', 3000, (err, unlockOrExtend) ->
counter = 3
counter = 4
db.presetsCollection.find().toArray((err, res) ->
if err
callback(err) if -- counter >= 0
@@ -198,11 +199,33 @@ refresh = (callback) ->
return callback()
)
)
db.filesCollection.find().toArray((err, res) ->
if err
callback(err) if -- counter >= 0
counter = 0
return
files = {}
for r in res
id = r.filename or r._id.toString()
files[id] = {}
files[id].length = r.length
files[id].md5 = r.md5
files[id].contentType = r.contentType
if -- counter == 0
computeHash()
db.redisClient.setex("presets_hash", 300, hash, (err) ->
unlockOrExtend(0)
nextRefresh = now + REFRESH
return callback()
)
)
)
)
getPresets = (callback) ->
if Date.now() < nextRefresh
return callback(null, hash, presets)
@@ -230,6 +253,15 @@ getVirtualParameters = (callback) ->
)
getFiles = (callback) ->
if Date.now() < nextRefresh
return callback(null, hash, files)
refresh((err) ->
return callback(err, hash, files)
)
getProvisionsAndVirtualParameters = (callback) ->
if Date.now() < nextRefresh
return callback(null, hash, provisions, virtualParameters)
@@ -240,4 +272,5 @@ getProvisionsAndVirtualParameters = (callback) ->
exports.getPresets = getPresets
exports.getProvisions = getProvisions
exports.getFiles = getFiles
exports.getProvisionsAndVirtualParameters = getProvisionsAndVirtualParameters