diff --git a/src/appstore.js b/src/appstore.js index 11670f3c1..3a4ae27a6 100644 --- a/src/appstore.js +++ b/src/appstore.js @@ -4,6 +4,8 @@ exports = module.exports = { purchase: purchase, unpurchase: unpurchase, + getSubscription: getSubscription, + sendAliveStatus: sendAliveStatus, getAppUpdate: getAppUpdate, @@ -68,6 +70,25 @@ function getAppstoreConfig(callback) { } } +function getSubscription(callback) { + assert.strictEqual(typeof callback, 'function'); + + getAppstoreConfig(function (error, appstoreConfig) { + if (error) return callback(error); + + const url = config.apiServerOrigin() + '/api/v1/users/' + appstoreConfig.userId + '/cloudrons/' + appstoreConfig.cloudronId + '/subscription'; + superagent.get(url).query({ accessToken: appstoreConfig.token }).timeout(30 * 1000).end(function (error, result) { + if (error && !error.response) return callback(new AppstoreError(AppstoreError.EXTERNAL_ERROR, error.message)); + if (result.statusCode === 401) return callback(new AppstoreError(AppstoreError.EXTERNAL_ERROR, 'invalid appstore token')); + if (result.statusCode === 403) return callback(new AppstoreError(AppstoreError.EXTERNAL_ERROR, 'wrong user')); + if (result.statusCode === 502) return callback(new AppstoreError(AppstoreError.EXTERNAL_ERROR, 'stripe error')); + if (result.statusCode !== 200) return callback(new AppstoreError(AppstoreError.EXTERNAL_ERROR, 'unknown error')); + + callback(null, result.body.subscription); + }); + }); +} + function purchase(appId, appstoreId, callback) { assert.strictEqual(typeof appId, 'string'); assert.strictEqual(typeof appstoreId, 'string'); @@ -82,7 +103,7 @@ function purchase(appId, appstoreId, callback) { var data = { appstoreId: appstoreId }; superagent.post(url).send(data).query({ accessToken: appstoreConfig.token }).timeout(30 * 1000).end(function (error, result) { - if (error && !error.response) return callback(new AppstoreError(AppstoreError.EXTERNAL_ERROR, error)); + if (error && !error.response) return callback(new AppstoreError(AppstoreError.EXTERNAL_ERROR, error.message)); if (result.statusCode === 404) return callback(new AppstoreError(AppstoreError.NOT_FOUND)); if (result.statusCode === 403 || result.statusCode === 401) return callback(new AppstoreError(AppstoreError.BILLING_REQUIRED)); if (result.statusCode === 402) return callback(new AppstoreError(AppstoreError.BILLING_REQUIRED, result.body.message)); diff --git a/src/settings.js b/src/settings.js index b6e6d9918..88f1feed4 100644 --- a/src/settings.js +++ b/src/settings.js @@ -8,8 +8,6 @@ exports = module.exports = { getEmailStatus: getEmailStatus, - getSubscription: getSubscription, - getAutoupdatePattern: getAutoupdatePattern, setAutoupdatePattern: setAutoupdatePattern, @@ -356,25 +354,6 @@ function getEmailStatus(callback) { }); } -function getSubscription(callback) { - assert.strictEqual(typeof callback, 'function'); - - getAppstoreConfig(function (error, result) { - if (error) return callback(error); - - const url = config.apiServerOrigin() + '/api/v1/users/' + result.userId + '/cloudrons/' + result.cloudronId + '/subscription'; - superagent.get(url).query({ accessToken: result.token }).timeout(30 * 1000).end(function (error, result) { - if (error && !error.response) return callback(new SettingsError(SettingsError.EXTERNAL_ERROR, error.message)); - if (result.statusCode === 401) return callback(new SettingsError(SettingsError.EXTERNAL_ERROR, 'invalid appstore token')); - if (result.statusCode === 403) return callback(new SettingsError(SettingsError.EXTERNAL_ERROR, 'wrong user')); - if (result.statusCode === 502) return callback(new SettingsError(SettingsError.EXTERNAL_ERROR, 'stripe error')); - if (result.statusCode !== 200) return callback(new SettingsError(SettingsError.EXTERNAL_ERROR, 'unknown error')); - - callback(null, result.body.subscription); - }); - }); -} - function setAutoupdatePattern(pattern, callback) { assert.strictEqual(typeof pattern, 'string'); assert.strictEqual(typeof callback, 'function'); diff --git a/src/updatechecker.js b/src/updatechecker.js index 87e4a43a8..f74e04d88 100644 --- a/src/updatechecker.js +++ b/src/updatechecker.js @@ -98,7 +98,7 @@ function checkAppUpdates(callback) { return iteratorDone(); } - settings.getSubscription(function (error, result) { + appstore.getSubscription(function (error, result) { if (error) { debug('Error getting subscription for %s', app.id, error); return iteratorDone(); @@ -162,7 +162,7 @@ function checkBoxUpdates(callback) { return callback(); } - settings.getSubscription(function (error, result) { + appstore.getSubscription(function (error, result) { if (error) return callback(error); function done() {