PushRouter.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = exports.PushRouter = void 0;
  6. var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
  7. var middleware = _interopRequireWildcard(require("../middlewares"));
  8. var _node = require("parse/node");
  9. function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
  10. function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
  11. function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
  12. class PushRouter extends _PromiseRouter.default {
  13. mountRoutes() {
  14. this.route('POST', '/push', middleware.promiseEnforceMasterKeyAccess, PushRouter.handlePOST);
  15. }
  16. static handlePOST(req) {
  17. if (req.auth.isReadOnly) {
  18. throw new _node.Parse.Error(_node.Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to send push notifications.");
  19. }
  20. const pushController = req.config.pushController;
  21. if (!pushController) {
  22. throw new _node.Parse.Error(_node.Parse.Error.PUSH_MISCONFIGURED, 'Push controller is not set');
  23. }
  24. const where = PushRouter.getQueryCondition(req);
  25. let resolve;
  26. const promise = new Promise(_resolve => {
  27. resolve = _resolve;
  28. });
  29. let pushStatusId;
  30. pushController.sendPush(req.body, where, req.config, req.auth, objectId => {
  31. pushStatusId = objectId;
  32. resolve({
  33. headers: {
  34. 'X-Parse-Push-Status-Id': pushStatusId
  35. },
  36. response: {
  37. result: true
  38. }
  39. });
  40. }).catch(err => {
  41. req.config.loggerController.error(`_PushStatus ${pushStatusId}: error while sending push`, err);
  42. });
  43. return promise;
  44. }
  45. /**
  46. * Get query condition from the request body.
  47. * @param {Object} req A request object
  48. * @returns {Object} The query condition, the where field in a query api call
  49. */
  50. static getQueryCondition(req) {
  51. const body = req.body || {};
  52. const hasWhere = typeof body.where !== 'undefined';
  53. const hasChannels = typeof body.channels !== 'undefined';
  54. let where;
  55. if (hasWhere && hasChannels) {
  56. throw new _node.Parse.Error(_node.Parse.Error.PUSH_MISCONFIGURED, 'Channels and query can not be set at the same time.');
  57. } else if (hasWhere) {
  58. where = body.where;
  59. } else if (hasChannels) {
  60. where = {
  61. channels: {
  62. $in: body.channels
  63. }
  64. };
  65. } else {
  66. throw new _node.Parse.Error(_node.Parse.Error.PUSH_MISCONFIGURED, 'Sending a push requires either "channels" or a "where" query.');
  67. }
  68. return where;
  69. }
  70. }
  71. exports.PushRouter = PushRouter;
  72. var _default = exports.default = PushRouter;
  73. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwibWlkZGxld2FyZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX25vZGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJQdXNoUm91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImhhbmRsZVBPU1QiLCJyZXEiLCJhdXRoIiwiaXNSZWFkT25seSIsIlBhcnNlIiwiRXJyb3IiLCJPUEVSQVRJT05fRk9SQklEREVOIiwicHVzaENvbnRyb2xsZXIiLCJjb25maWciLCJQVVNIX01JU0NPTkZJR1VSRUQiLCJ3aGVyZSIsImdldFF1ZXJ5Q29uZGl0aW9uIiwicmVzb2x2ZSIsInByb21pc2UiLCJQcm9taXNlIiwiX3Jlc29sdmUiLCJwdXNoU3RhdHVzSWQiLCJzZW5kUHVzaCIsImJvZHkiLCJvYmplY3RJZCIsImhlYWRlcnMiLCJyZXNwb25zZSIsInJlc3VsdCIsImNhdGNoIiwiZXJyIiwibG9nZ2VyQ29udHJvbGxlciIsImVycm9yIiwiaGFzV2hlcmUiLCJoYXNDaGFubmVscyIsImNoYW5uZWxzIiwiJGluIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvUHVzaFJvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IHsgUGFyc2UgfSBmcm9tICdwYXJzZS9ub2RlJztcblxuZXhwb3J0IGNsYXNzIFB1c2hSb3V0ZXIgZXh0ZW5kcyBQcm9taXNlUm91dGVyIHtcbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvcHVzaCcsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIFB1c2hSb3V0ZXIuaGFuZGxlUE9TVCk7XG4gIH1cblxuICBzdGF0aWMgaGFuZGxlUE9TVChyZXEpIHtcbiAgICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBzZW5kIHB1c2ggbm90aWZpY2F0aW9ucy5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgcHVzaENvbnRyb2xsZXIgPSByZXEuY29uZmlnLnB1c2hDb250cm9sbGVyO1xuICAgIGlmICghcHVzaENvbnRyb2xsZXIpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsICdQdXNoIGNvbnRyb2xsZXIgaXMgbm90IHNldCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHdoZXJlID0gUHVzaFJvdXRlci5nZXRRdWVyeUNvbmRpdGlvbihyZXEpO1xuICAgIGxldCByZXNvbHZlO1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShfcmVzb2x2ZSA9PiB7XG4gICAgICByZXNvbHZlID0gX3Jlc29sdmU7XG4gICAgfSk7XG4gICAgbGV0IHB1c2hTdGF0dXNJZDtcbiAgICBwdXNoQ29udHJvbGxlclxuICAgICAgLnNlbmRQdXNoKHJlcS5ib2R5LCB3aGVyZSwgcmVxLmNvbmZpZywgcmVxLmF1dGgsIG9iamVjdElkID0+IHtcbiAgICAgICAgcHVzaFN0YXR1c0lkID0gb2JqZWN0SWQ7XG4gICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdYLVBhcnNlLVB1c2gtU3RhdHVzLUlkJzogcHVzaFN0YXR1c0lkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICAgIHJlc3VsdDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyLmVycm9yKFxuICAgICAgICAgIGBfUHVzaFN0YXR1cyAke3B1c2hTdGF0dXNJZH06IGVycm9yIHdoaWxlIHNlbmRpbmcgcHVzaGAsXG4gICAgICAgICAgZXJyXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcXVlcnkgY29uZGl0aW9uIGZyb20gdGhlIHJlcXVlc3QgYm9keS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHJlcSBBIHJlcXVlc3Qgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBxdWVyeSBjb25kaXRpb24sIHRoZSB3aGVyZSBmaWVsZCBpbiBhIHF1ZXJ5IGFwaSBjYWxsXG4gICAqL1xuICBzdGF0aWMgZ2V0UXVlcnlDb25kaXRpb24ocmVxKSB7XG4gICAgY29uc3QgYm9keSA9IHJlcS5ib2R5IHx8IHt9O1xuICAgIGNvbnN0IGhhc1doZXJlID0gdHlwZW9mIGJvZHkud2hlcmUgIT09ICd1bmRlZmluZWQnO1xuICAgIGNvbnN0IGhhc0NoYW5uZWxzID0gdHlwZW9mIGJvZHkuY2hhbm5lbHMgIT09ICd1bmRlZmluZWQnO1xuXG4gICAgbGV0IHdoZXJlO1xuICAgIGlmIChoYXNXaGVyZSAmJiBoYXNDaGFubmVscykge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgICdDaGFubmVscyBhbmQgcXVlcnkgY2FuIG5vdCBiZSBzZXQgYXQgdGhlIHNhbWUgdGltZS4nXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaGFzV2hlcmUpIHtcbiAgICAgIHdoZXJlID0gYm9keS53aGVyZTtcbiAgICB9IGVsc2UgaWYgKGhhc0NoYW5uZWxzKSB7XG4gICAgICB3aGVyZSA9IHtcbiAgICAgICAgY2hhbm5lbHM6IHtcbiAgICAgICAgICAkaW46IGJvZHkuY2hhbm5lbHMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLlBVU0hfTUlTQ09ORklHVVJFRCxcbiAgICAgICAgJ1NlbmRpbmcgYSBwdXNoIHJlcXVpcmVzIGVpdGhlciBcImNoYW5uZWxzXCIgb3IgYSBcIndoZXJlXCIgcXVlcnkuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHdoZXJlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1c2hSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUFtQyxTQUFBSSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBSCx3QkFBQUcsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUos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