Improvements in REST API
This commit is contained in:
parent
d980a31c05
commit
b8ab47e867
2 changed files with 300 additions and 288 deletions
|
|
@ -31,8 +31,8 @@ function defaultFailParams(e) {
|
|||
}
|
||||
|
||||
function checkAuthToken(token) {
|
||||
if (token !== Meteor.settings.private.internalApiToken) {
|
||||
const message = `Unauthorized auth token '${token}' in REST API`;
|
||||
if (!Meteor.settings.private.internalApiToken || token !== Meteor.settings.private.internalApiToken) {
|
||||
const message = 'Unauthorized auth token in REST API';
|
||||
console.warn(message);
|
||||
return restivusError(401, message);
|
||||
}
|
||||
|
|
@ -45,7 +45,9 @@ function checkLatLonDist(km, lat, lng) {
|
|||
check(km, NumberBetween(0, Meteor.isDevelopment ? 1000 : 100));
|
||||
}
|
||||
|
||||
|
||||
if (!Meteor.settings.private.internalApiToken) {
|
||||
console.warn('Meteor.settings.private.internalApiToken is not configured so we don\'t enable our REST API');
|
||||
} else {
|
||||
// export
|
||||
const apiV1 = new Restivus({
|
||||
useDefaultAuth: true,
|
||||
|
|
@ -211,14 +213,22 @@ apiV1.addRoute('mobile/users', { authRequired: false }, {
|
|||
|
||||
let username;
|
||||
|
||||
const already = Meteor.users.find({ fireBaseToken: mobileToken });
|
||||
|
||||
if (already.count() > 1) {
|
||||
return restivusError(500, 'Unexpected error in REST call: several users with that mobile token?');
|
||||
} else if (already.count() === 1) {
|
||||
username = already.fetch()[0].username;
|
||||
} else {
|
||||
do {
|
||||
username = Random.id(15);
|
||||
} while (Meteor.users.find({ username }).count() !== 0);
|
||||
}
|
||||
|
||||
// FIXME check valid lang
|
||||
|
||||
const now = new Date();
|
||||
// Accounts.createUser({ username: mobileToken, lang: 'FIXME' profile: {} });
|
||||
|
||||
const result = Meteor.users.upsert({
|
||||
fireBaseToken: mobileToken
|
||||
}, {
|
||||
|
|
@ -232,20 +242,23 @@ apiV1.addRoute('mobile/users', { authRequired: false }, {
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
if (debug) {
|
||||
console.log(this.bodyParams);
|
||||
console.log(this.urlParams);
|
||||
console.log(this.queryParams);
|
||||
}
|
||||
|
||||
const newUser = Meteor.users.findOne({ username });
|
||||
const upsertUser = Meteor.users.findOne({ username });
|
||||
|
||||
if (debug) console.log(upsertUser);
|
||||
|
||||
return jsend.success({
|
||||
upsertResult: result,
|
||||
username,
|
||||
userId: newUser._id,
|
||||
lang: newUser.lang,
|
||||
mobileToken: newUser.fireBaseToken
|
||||
userId: upsertUser._id,
|
||||
lang: upsertUser.lang,
|
||||
mobileToken: upsertUser.fireBaseToken
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -364,3 +377,4 @@ apiV1.addRoute('mobile/subscriptions/all', { authRequired: false }, {
|
|||
return jsend.success({ count: toRemove });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -270,9 +270,8 @@ describe('basic api v1 returns', () => {
|
|||
});
|
||||
|
||||
it('should del all mobile user subscriptions', async (done) => {
|
||||
// Add two
|
||||
addSubs(() => {});
|
||||
addSubs(() => {});
|
||||
// Add subs
|
||||
addSubs(() => {
|
||||
HTTP.del(url('api/v1/mobile/subscriptions/all'), {
|
||||
data: {
|
||||
token,
|
||||
|
|
@ -284,10 +283,9 @@ describe('basic api v1 returns', () => {
|
|||
const jsendResult = result.data;
|
||||
chai.expect(jsendResult.status).equal('success');
|
||||
chai.expect(typeof jsendResult.data.count).to.equal('number');
|
||||
chai.expect(jsendResult.data.count).to.equal(2);
|
||||
chai.expect(jsendResult.data.count).to.equal(1);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
// TODO remove all subs
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue