|
|
|
@ -12,9 +12,41 @@ Upload.status = function (Env, safeKey, filesize, _cb) { // FIXME FILES |
|
|
|
if (typeof(filesize) !== 'number' && |
|
|
|
filesize >= 0) { return void cb('E_INVALID_SIZE'); } |
|
|
|
|
|
|
|
if (filesize >= Env.maxUploadSize) { return cb('TOO_LARGE'); } |
|
|
|
|
|
|
|
nThen(function (w) { |
|
|
|
// if the proposed upload size is within the regular limit
|
|
|
|
// jump ahead to the next block
|
|
|
|
if (filesize <= Env.maxUploadSize) { return; } |
|
|
|
|
|
|
|
// if larger uploads aren't explicitly enabled then reject them
|
|
|
|
if (typeof(Env.premiumUploadSize) !== 'number') { |
|
|
|
w.abort(); |
|
|
|
return void cb('TOO_LARGE'); |
|
|
|
} |
|
|
|
|
|
|
|
// otherwise go and retrieve info about the user's quota
|
|
|
|
Pinning.getLimit(Env, safeKey, w(function (err, limit) { |
|
|
|
if (err) { |
|
|
|
w.abort(); |
|
|
|
return void cb("E_BAD_LIMIT"); |
|
|
|
} |
|
|
|
|
|
|
|
var plan = limit[1]; |
|
|
|
|
|
|
|
// see if they have a special plan, reject them if not
|
|
|
|
if (plan === '') { |
|
|
|
w.abort(); |
|
|
|
return void cb('TOO_LARGE'); |
|
|
|
} |
|
|
|
|
|
|
|
// and that they're not over the greater limit
|
|
|
|
if (filesize >= Env.premiumUploadSize) { |
|
|
|
w.abort(); |
|
|
|
return void cb("TOO_LARGE"); |
|
|
|
} |
|
|
|
|
|
|
|
// fallthrough will proceed to the next block
|
|
|
|
})); |
|
|
|
}).nThen(function (w) { |
|
|
|
var abortAndCB = Util.both(w.abort, cb); |
|
|
|
Env.blobStore.status(safeKey, w(function (err, inProgress) { |
|
|
|
// if there's an error something is weird
|
|
|
|
|