From 5219e0b1d8e3e3395a2952b071320b6b0974f9f2 Mon Sep 17 00:00:00 2001 From: Drew Gross Date: Tue, 1 Mar 2016 15:35:48 -0800 Subject: [PATCH] Touch up features endpoint --- spec/features.spec.js | 6 ++-- src/Routers/FeaturesRouter.js | 6 ++-- src/features.js | 52 ++++++++++++----------------------- 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/spec/features.spec.js b/spec/features.spec.js index 3ddd7a60..75cbcb22 100644 --- a/spec/features.spec.js +++ b/spec/features.spec.js @@ -5,7 +5,7 @@ const request = require("request"); describe('features', () => { it('set and get features', (done) => { - features.setFeature('users', { + features.setFeature('push', { testOption1: true, testOption2: false }); @@ -14,10 +14,10 @@ describe('features', () => { var expected = { testOption1: true, - testOption2: false + testOption2: false }; - expect(_features.users).toEqual(expected); + expect(_features.push).toEqual(expected); done(); }); diff --git a/src/Routers/FeaturesRouter.js b/src/Routers/FeaturesRouter.js index 05ccad5b..2205ceff 100644 --- a/src/Routers/FeaturesRouter.js +++ b/src/Routers/FeaturesRouter.js @@ -1,13 +1,11 @@ -import PromiseRouter from '../PromiseRouter'; +import PromiseRouter from '../PromiseRouter'; import * as middleware from "../middlewares"; import { getFeatures } from '../features'; export class FeaturesRouter extends PromiseRouter { mountRoutes() { this.route('GET','/features', middleware.promiseEnforceMasterKeyAccess, () => { - return { response: { - results: [getFeatures()] - } }; + return { response: getFeatures() }; }); } } diff --git a/src/features.js b/src/features.js index 1048b91c..6ff00095 100644 --- a/src/features.js +++ b/src/features.js @@ -14,26 +14,18 @@ * Features that use Adapters should specify the feature options through * the setFeature method in your controller and feature * Reference PushController and ParsePushAdapter as an example. - * + * * NOTE: When adding new endpoints be sure to update this list both (features, featureSwitch) - * if you are planning to have a UI consume it. + * if you are planning to have a UI consume it. */ // default features let features = { - analytics: { - slowQueries: false, - performanceAnalysis: false, - retentionAnalysis: false, - }, - classes: {}, - files: {}, - functions: {}, globalConfig: { - create: true, - read: true, - update: true, - delete: true, + create: false, + read: false, + update: false, + delete: false, }, hooks: { create: false, @@ -41,15 +33,19 @@ let features = { update: false, delete: false, }, - iapValidation: {}, - installations: {}, logs: { - info: true, - error: true, + level: false, + size: false, + order: false, + until: false, + from: false, + }, + push: { + immediatePush: false, + scheduledPush: false, + storedPushData: false, + pushAudiences: false, }, - publicAPI: {}, - push: {}, - roles: {}, schemas: { addField: true, removeField: true, @@ -58,27 +54,15 @@ let features = { clearAllDataFromClass: false, exportClass: false, }, - sessions: {}, - users: {}, }; // master switch for features let featuresSwitch = { - analytics: true, - classes: true, - files: true, - functions: true, globalConfig: true, hooks: true, - iapValidation: true, - installations: true, logs: true, - publicAPI: true, push: true, - roles: true, schemas: true, - sessions: true, - users: true, }; /** @@ -94,7 +78,7 @@ function setFeature(key, value) { function getFeatures() { let result = {}; Object.keys(features).forEach((key) => { - if (featuresSwitch[key]) { + if (featuresSwitch[key] && features[key]) { result[key] = features[key]; } });