From b670a1ab36fcf514751e4b356487a96088dbbd24 Mon Sep 17 00:00:00 2001 From: Xavier Priour Date: Wed, 14 Oct 2015 22:09:32 +0200 Subject: Import single card: proper error handling --- models/import.js | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) (limited to 'models') diff --git a/models/import.js b/models/import.js index a76bbc5f..51206ea3 100644 --- a/models/import.js +++ b/models/import.js @@ -1,40 +1,44 @@ Meteor.methods({ - /** - * - */ importTrelloCard(trelloCard, listId, sortIndex) { // 1. check parameters are ok from a syntax point of view DateString = Match.Where(function (dateAsString) { check(dateAsString, String); return moment(dateAsString, moment.ISO_8601).isValid(); }); - check(trelloCard, Match.ObjectIncluding({ - name: String, - desc: String, - closed: Boolean, - dateLastActivity: DateString, - labels: [Match.ObjectIncluding({ + try { + check(trelloCard, Match.ObjectIncluding({ name: String, - color: String, - })], - actions: [Match.ObjectIncluding({ - type: String, - date: DateString, - data: Object, - })], - members: [Object], - })); - check(listId, String); - check(sortIndex, Number); + desc: String, + closed: Boolean, + dateLastActivity: DateString, + labels: [Match.ObjectIncluding({ + name: String, + color: String, + })], + actions: [Match.ObjectIncluding({ + type: String, + date: DateString, + data: Object, + })], + members: [Object], + })); + check(listId, String); + check(sortIndex, Number); + } catch(e) { + if(Meteor.isServer) { + console.log(e); + } + throw new Meteor.Error('error-json-schema'); + } // 2. check parameters are ok from a business point of view (exist & authorized) const list = Lists.findOne(listId); if(!list) { - throw 'exception-list-doesNotExist'; + throw new Meteor.Error('error-list-doesNotExist'); } if(Meteor.isServer) { if (!allowIsBoardMember(Meteor.userId(), Boards.findOne(list.boardId))) { - throw 'exception-board-notAMember'; + throw new Meteor.Error('error-board-notAMember'); } } -- cgit v1.2.3-1-g7c22