diff --git a/src/backups.js b/src/backups.js index 92526986c..62168f538 100644 --- a/src/backups.js +++ b/src/backups.js @@ -17,7 +17,6 @@ var assert = require('assert'), debug = require('debug')('box:backups'), s3 = require('./storage/s3.js'), settings = require('./settings.js'), - superagent = require('superagent'), util = require('util'); function BackupsError(reason, errorOrMessage) { @@ -48,7 +47,7 @@ function api(provider) { switch (provider) { case 'caas': return caas; case 's3': return s3; - default: return null + default: return null; } } @@ -57,18 +56,13 @@ function getAllPaged(page, perPage, callback) { assert.strictEqual(typeof perPage, 'number'); assert.strictEqual(typeof callback, 'function'); - var url = config.apiServerOrigin() + '/api/v1/boxes/' + config.fqdn() + '/backups'; - settings.getBackupConfig(function (error, backupConfig) { if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); - superagent.get(url).query({ token: backupConfig.token }).end(function (error, result) { + api(backupConfig.provider).getAllPaged(backupConfig, page, perPage, function (error, backups) { if (error) return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, error)); - if (result.statusCode !== 200) return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, result.text)); - if (!result.body || !util.isArray(result.body.backups)) return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, 'Unexpected response')); - // [ { creationTime, boxVersion, restoreKey, dependsOn: [ ] } ] sorted by time (latest first) - return callback(null, result.body.backups); + return callback(null, backups); // [ { creationTime, boxVersion, restoreKey, dependsOn: [ ] } ] sorted by time (latest first }); }); } diff --git a/src/storage/caas.js b/src/storage/caas.js index 3cc5d40b9..d26745338 100644 --- a/src/storage/caas.js +++ b/src/storage/caas.js @@ -6,13 +6,16 @@ exports = module.exports = { getSignedUploadUrl: getSignedUploadUrl, getSignedDownloadUrl: getSignedDownloadUrl, - copyObject: copyObject + copyObject: copyObject, + + getAllPaged: getAllPaged }; var assert = require('assert'), AWS = require('aws-sdk'), config = require('../config.js'), - superagent = require('superagent'); + superagent = require('superagent'), + util = require('util'); function getBackupCredentials(backupConfig, callback) { assert.strictEqual(typeof backupConfig, 'object'); @@ -38,6 +41,23 @@ function getBackupCredentials(backupConfig, callback) { }); } +function getAllPaged(backupConfig, page, perPage, callback) { + assert.strictEqual(typeof backupConfig, 'object'); + assert.strictEqual(typeof page, 'number'); + assert.strictEqual(typeof perPage, 'number'); + assert.strictEqual(typeof callback, 'function'); + + var url = config.apiServerOrigin() + '/api/v1/boxes/' + config.fqdn() + '/backups'; + superagent.get(url).query({ token: backupConfig.token }).end(function (error, result) { + if (error) return callback(error); + if (result.statusCode !== 200) return callback(new Error(result.text)); + if (!result.body || !util.isArray(result.body.backups)) return callback(new Error('Unexpected response')); + + // [ { creationTime, boxVersion, restoreKey, dependsOn: [ ] } ] sorted by time (latest first) + return callback(null, result.body.backups); + }); +} + function getSignedUploadUrl(backupConfig, filename, callback) { assert.strictEqual(typeof backupConfig, 'object'); assert.strictEqual(typeof filename, 'string'); diff --git a/src/storage/s3.js b/src/storage/s3.js index b6c1ef56e..fa8452878 100644 --- a/src/storage/s3.js +++ b/src/storage/s3.js @@ -6,12 +6,12 @@ exports = module.exports = { getSignedUploadUrl: getSignedUploadUrl, getSignedDownloadUrl: getSignedDownloadUrl, - copyObject: copyObject + copyObject: copyObject, + getAllPaged: getAllPaged }; var assert = require('assert'), - AWS = require('aws-sdk'), - config = require('../config.js'); + AWS = require('aws-sdk'); function getBackupCredentials(backupConfig, callback) { assert.strictEqual(typeof backupConfig, 'object'); @@ -30,6 +30,15 @@ function getBackupCredentials(backupConfig, callback) { callback(null, credentials); } +function getAllPaged(backupConfig, page, perPage, callback) { + assert.strictEqual(typeof backupConfig, 'object'); + assert.strictEqual(typeof page, 'number'); + assert.strictEqual(typeof perPage, 'number'); + assert.strictEqual(typeof callback, 'function'); + + return callback(new Error('Not implemented yet')); +} + function getSignedUploadUrl(backupConfig, filename, callback) { assert.strictEqual(typeof backupConfig, 'object'); assert.strictEqual(typeof filename, 'string');