Skip to content

Commit 3b1ac04

Browse files
committed
Mark push as enabled in serverInfo endpoint
1 parent 16b6ec4 commit 3b1ac04

File tree

6 files changed

+88
-175
lines changed

6 files changed

+88
-175
lines changed

spec/features.spec.js

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,9 @@
11
'use strict';
22

3-
var features = require('../src/features');
43
const request = require("request");
54

65
describe('features', () => {
7-
it('set and get features', (done) => {
8-
features.setFeature('push', {
9-
testOption1: true,
10-
testOption2: false
11-
});
12-
13-
var _features = features.getFeatures();
14-
15-
var expected = {
16-
testOption1: true,
17-
testOption2: false
18-
};
19-
20-
expect(_features.push).toEqual(expected);
21-
done();
22-
});
23-
24-
it('get features that does not exist', (done) => {
25-
var _features = features.getFeatures();
26-
expect(_features.test).toBeUndefined();
27-
done();
28-
});
29-
30-
it('requires the master key to get all schemas', done => {
6+
it('requires the master key to get features', done => {
317
request.get({
328
url: 'http://localhost:8378/1/serverInfo',
339
json: true,

src/Controllers/AdaptableController.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,8 @@ export class AdaptableController {
1818
this.options = options;
1919
this.appId = appId;
2020
this.adapter = adapter;
21-
this.setFeature();
2221
}
2322

24-
// sets features for Dashboard to consume from features router
25-
setFeature() {}
26-
2723
set adapter(adapter) {
2824
this.validateAdapter(adapter);
2925
this[_adapter] = adapter;

src/Controllers/PushController.js

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
1-
import { Parse } from 'parse/node';
2-
import PromiseRouter from '../PromiseRouter';
3-
import rest from '../rest';
1+
import { Parse } from 'parse/node';
2+
import PromiseRouter from '../PromiseRouter';
3+
import rest from '../rest';
44
import AdaptableController from './AdaptableController';
5-
import { PushAdapter } from '../Adapters/Push/PushAdapter';
6-
import deepcopy from 'deepcopy';
7-
import features from '../features';
8-
import RestQuery from '../RestQuery';
9-
import pushStatusHandler from '../pushStatusHandler';
5+
import { PushAdapter } from '../Adapters/Push/PushAdapter';
6+
import deepcopy from 'deepcopy';
7+
import RestQuery from '../RestQuery';
8+
import pushStatusHandler from '../pushStatusHandler';
109

1110
const FEATURE_NAME = 'push';
1211
const UNSUPPORTED_BADGE_KEY = "unsupported";
1312

1413
export class PushController extends AdaptableController {
1514

16-
setFeature() {
17-
features.setFeature(FEATURE_NAME, this.adapter.feature || {});
18-
}
19-
2015
/**
2116
* Check whether the deviceType parameter in qury condition is valid or not.
2217
* @param {Object} where A query condition
@@ -39,9 +34,13 @@ export class PushController extends AdaptableController {
3934
}
4035
}
4136

37+
pushIsAvailable() {
38+
return !!this.adapter;
39+
}
40+
4241
sendPush(body = {}, where = {}, config, auth, wait) {
4342
var pushAdapter = this.adapter;
44-
if (!pushAdapter) {
43+
if (!this.pushIsAvailable()) {
4544
throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED,
4645
'Push adapter is not available');
4746
}

src/Routers/FeaturesRouter.js

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,49 @@
11
import { version } from '../../package.json';
22
import PromiseRouter from '../PromiseRouter';
33
import * as middleware from "../middlewares";
4-
import { getFeatures } from '../features';
54

65
export class FeaturesRouter extends PromiseRouter {
76
mountRoutes() {
8-
this.route('GET','/serverInfo', middleware.promiseEnforceMasterKeyAccess, () => {
7+
this.route('GET','/serverInfo', middleware.promiseEnforceMasterKeyAccess, req => {
8+
const features = {
9+
globalConfig: {
10+
create: false,
11+
read: false,
12+
update: false,
13+
delete: false,
14+
},
15+
hooks: {
16+
create: false,
17+
read: false,
18+
update: false,
19+
delete: false,
20+
},
21+
logs: {
22+
level: false,
23+
size: false,
24+
order: false,
25+
until: false,
26+
from: false,
27+
},
28+
push: {
29+
immediatePush: req.config.pushController.pushIsAvailable(),
30+
scheduledPush: false,
31+
storedPushData: false,
32+
pushAudiences: false,
33+
},
34+
schemas: {
35+
addField: true,
36+
removeField: true,
37+
addClass: true,
38+
removeClass: true,
39+
clearAllDataFromClass: false,
40+
exportClass: false,
41+
editClassLevelPermissions: true,
42+
},
43+
};
44+
945
return { response: {
10-
features: getFeatures(),
46+
features: features,
1147
parseServerVersion: version,
1248
} };
1349
});

src/features.js

Lines changed: 0 additions & 92 deletions
This file was deleted.

src/index.js

Lines changed: 36 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -12,43 +12,42 @@ var batch = require('./batch'),
1212
authDataManager = require('./authDataManager');
1313

1414
//import passwordReset from './passwordReset';
15-
import cache from './cache';
16-
import Config from './Config';
17-
import parseServerPackage from '../package.json';
18-
import ParsePushAdapter from './Adapters/Push/ParsePushAdapter';
19-
import PromiseRouter from './PromiseRouter';
20-
import requiredParameter from './requiredParameter';
21-
import { AnalyticsRouter } from './Routers/AnalyticsRouter';
22-
import { ClassesRouter } from './Routers/ClassesRouter';
23-
import { FeaturesRouter } from './Routers/FeaturesRouter';
24-
import { FileLoggerAdapter } from './Adapters/Logger/FileLoggerAdapter';
25-
import { FilesController } from './Controllers/FilesController';
26-
import { FilesRouter } from './Routers/FilesRouter';
27-
import { FunctionsRouter } from './Routers/FunctionsRouter';
28-
import { GCSAdapter } from './Adapters/Files/GCSAdapter';
29-
import { GlobalConfigRouter } from './Routers/GlobalConfigRouter';
30-
import { GridStoreAdapter } from './Adapters/Files/GridStoreAdapter';
31-
import { HooksController } from './Controllers/HooksController';
32-
import { HooksRouter } from './Routers/HooksRouter';
33-
import { IAPValidationRouter } from './Routers/IAPValidationRouter';
34-
import { InstallationsRouter } from './Routers/InstallationsRouter';
35-
import { loadAdapter } from './Adapters/AdapterLoader';
36-
import { LiveQueryController } from './Controllers/LiveQueryController';
37-
import { LoggerController } from './Controllers/LoggerController';
38-
import { LogsRouter } from './Routers/LogsRouter';
39-
import { ParseLiveQueryServer } from './LiveQuery/ParseLiveQueryServer';
40-
import { PublicAPIRouter } from './Routers/PublicAPIRouter';
41-
import { PushController } from './Controllers/PushController';
42-
import { PushRouter } from './Routers/PushRouter';
43-
import { randomString } from './cryptoUtils';
44-
import { RolesRouter } from './Routers/RolesRouter';
45-
import { S3Adapter } from './Adapters/Files/S3Adapter';
46-
import { SchemasRouter } from './Routers/SchemasRouter';
47-
import { SessionsRouter } from './Routers/SessionsRouter';
48-
import { setFeature } from './features';
49-
import { UserController } from './Controllers/UserController';
50-
import { UsersRouter } from './Routers/UsersRouter';
51-
import { FileSystemAdapter } from './Adapters/Files/FileSystemAdapter';
15+
import cache from './cache';
16+
import Config from './Config';
17+
import parseServerPackage from '../package.json';
18+
import ParsePushAdapter from './Adapters/Push/ParsePushAdapter';
19+
import PromiseRouter from './PromiseRouter';
20+
import requiredParameter from './requiredParameter';
21+
import { AnalyticsRouter } from './Routers/AnalyticsRouter';
22+
import { ClassesRouter } from './Routers/ClassesRouter';
23+
import { FeaturesRouter } from './Routers/FeaturesRouter';
24+
import { FileLoggerAdapter } from './Adapters/Logger/FileLoggerAdapter';
25+
import { FilesController } from './Controllers/FilesController';
26+
import { FilesRouter } from './Routers/FilesRouter';
27+
import { FunctionsRouter } from './Routers/FunctionsRouter';
28+
import { GCSAdapter } from './Adapters/Files/GCSAdapter';
29+
import { GlobalConfigRouter } from './Routers/GlobalConfigRouter';
30+
import { GridStoreAdapter } from './Adapters/Files/GridStoreAdapter';
31+
import { HooksController } from './Controllers/HooksController';
32+
import { HooksRouter } from './Routers/HooksRouter';
33+
import { IAPValidationRouter } from './Routers/IAPValidationRouter';
34+
import { InstallationsRouter } from './Routers/InstallationsRouter';
35+
import { loadAdapter } from './Adapters/AdapterLoader';
36+
import { LiveQueryController } from './Controllers/LiveQueryController';
37+
import { LoggerController } from './Controllers/LoggerController';
38+
import { LogsRouter } from './Routers/LogsRouter';
39+
import { ParseLiveQueryServer } from './LiveQuery/ParseLiveQueryServer';
40+
import { PublicAPIRouter } from './Routers/PublicAPIRouter';
41+
import { PushController } from './Controllers/PushController';
42+
import { PushRouter } from './Routers/PushRouter';
43+
import { randomString } from './cryptoUtils';
44+
import { RolesRouter } from './Routers/RolesRouter';
45+
import { S3Adapter } from './Adapters/Files/S3Adapter';
46+
import { SchemasRouter } from './Routers/SchemasRouter';
47+
import { SessionsRouter } from './Routers/SessionsRouter';
48+
import { UserController } from './Controllers/UserController';
49+
import { UsersRouter } from './Routers/UsersRouter';
50+
import { FileSystemAdapter } from './Adapters/Files/FileSystemAdapter';
5251

5352
// Mutate the Parse object to add the Cloud Code handlers
5453
addParseCloud();
@@ -115,7 +114,6 @@ class ParseServer {
115114
},
116115
liveQuery = {}
117116
}) {
118-
setFeature('serverVersion', parseServerPackage.version);
119117
// Initialize the node client SDK automatically
120118
Parse.initialize(appId, javascriptKey || 'unused', masterKey);
121119
Parse.serverURL = serverURL;

0 commit comments

Comments
 (0)