From 6c1b0976fddfda6a31911d2fd7b20f28b64f8849 Mon Sep 17 00:00:00 2001
From: Devin Bayer
Date: Fri, 28 Oct 2016 15:04:52 +0200
Subject: [PATCH 01/30] add onMessage hook
---
packages/ddp-server/livedata_server.js | 22 +++++++++++++++++++
packages/ddp-server/livedata_server_tests.js | 23 +++++++++++++++++++-
packages/ddp-server/server_convenience.js | 2 +-
3 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/packages/ddp-server/livedata_server.js b/packages/ddp-server/livedata_server.js
index 2ac3aebea1..f714e6e0de 100644
--- a/packages/ddp-server/livedata_server.js
+++ b/packages/ddp-server/livedata_server.js
@@ -547,6 +547,11 @@ _.extend(Session.prototype, {
processNext();
};
+ self.server.onMessageHook.each(function (callback) {
+ callback(msg, self);
+ return true;
+ });
+
if (_.has(self.protocol_handlers, msg.msg))
self.protocol_handlers[msg.msg].call(self, msg, unblock);
else
@@ -1320,6 +1325,11 @@ Server = function (options) {
debugPrintExceptions: "onConnection callback"
});
+ // Map of callbacks to call when a new message comes in.
+ self.onMessageHook = new Hook({
+ debugPrintExceptions: "onMessage callback"
+ });
+
self.publish_handlers = {};
self.universal_publish_handlers = [];
@@ -1403,6 +1413,18 @@ _.extend(Server.prototype, {
return self.onConnectionHook.register(fn);
},
+ /**
+ * @summary Register a callback to be called when a new DDP message is received.
+ * @locus Server
+ * @param {function} callback The function to call when a new DDP message is received.
+ * @memberOf Meteor
+ * @importFromPackage meteor
+ */
+ onMessage: function (fn) {
+ var self = this;
+ return self.onMessageHook.register(fn);
+ },
+
_handleConnect: function (socket, msg) {
var self = this;
diff --git a/packages/ddp-server/livedata_server_tests.js b/packages/ddp-server/livedata_server_tests.js
index 10203f319b..d24cfb0d06 100644
--- a/packages/ddp-server/livedata_server_tests.js
+++ b/packages/ddp-server/livedata_server_tests.js
@@ -82,7 +82,6 @@ testAsyncMulti(
}]
);
-
Meteor.methods({
livedata_server_test_inner: function () {
return this.connection.id;
@@ -94,6 +93,28 @@ Meteor.methods({
});
+Tinytest.addAsync(
+ "livedata server - onMessage hook",
+ function (test, onComplete) {
+
+ var cb = Meteor.onMessage(function (msg, session) {
+ test.equal(msg.method, 'livedata_server_test_inner');
+ cb.stop();
+ onComplete();
+ });
+
+ makeTestConnection(
+ test,
+ function (clientConn, serverConn) {
+ clientConn.call('livedata_server_test_inner');
+ clientConn.disconnect();
+ },
+ onComplete
+ );
+ }
+);
+
+
Tinytest.addAsync(
"livedata server - connection in method invocation",
function (test, onComplete) {
diff --git a/packages/ddp-server/server_convenience.js b/packages/ddp-server/server_convenience.js
index 62384353fa..28fca40b2b 100755
--- a/packages/ddp-server/server_convenience.js
+++ b/packages/ddp-server/server_convenience.js
@@ -11,7 +11,7 @@ Meteor.refresh = function (notification) {
// Proxy the public methods of Meteor.server so they can
// be called directly on Meteor.
-_.each(['publish', 'methods', 'call', 'apply', 'onConnection'],
+_.each(['publish', 'methods', 'call', 'apply', 'onConnection', 'onMessage'],
function (name) {
Meteor[name] = _.bind(Meteor.server[name], Meteor.server);
});
From a74b0c268ee0211e650e9b8b78cfb5923fff6b73 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20P=C3=A1l=20Koszta?=
Date: Mon, 21 Nov 2016 10:35:35 +0100
Subject: [PATCH 02/30] Fix oauth ROOT_URL_PATH_PREFIX
---
packages/oauth/end_of_popup_response.html | 2 +-
packages/oauth/end_of_redirect_response.html | 2 +-
packages/oauth/oauth_server.js | 5 +-
packages/oauth/oauth_tests.js | 48 ++++++++++++++++++++
4 files changed, 54 insertions(+), 3 deletions(-)
diff --git a/packages/oauth/end_of_popup_response.html b/packages/oauth/end_of_popup_response.html
index 9812af83da..11cf6c5692 100644
--- a/packages/oauth/end_of_popup_response.html
+++ b/packages/oauth/end_of_popup_response.html
@@ -6,6 +6,6 @@
##CONFIG##
-
+