Add more room operations. Log body content for now. Add isFunction to allow optional args to be omitted.

This commit is contained in:
Kegan Dougal
2015-03-04 15:21:28 +00:00
parent 092e222142
commit 846b251ca3
+63 -7
View File
@@ -60,23 +60,61 @@ var init = function(exports){
},
invite: function(roomId, userId, callback) {
return this._membershipChange(roomId, userId, "invite", callback);
return this._membershipChange(roomId, userId, "invite", undefined,
callback);
},
leave: function(roomId, callback) {
return this._membershipChange(roomId, undefined, "leave", callback);
return this._membershipChange(roomId, undefined, "leave", undefined,
callback);
},
_membershipChange: function(roomId, userId, membership, callback) {
ban: function(roomId, userId, reason, callback) {
return this._membershipChange(roomId, userId, "ban", reason,
callback);
},
unban: function(roomId, userId, callback) {
// unbanning = set their state to leave
return this._setMembershipState(
roomId, userId, "leave", undefined, callback
);
},
kick: function(roomId, userId, reason, callback) {
return this._setMembershipState(
roomId, userId, "leave", reason, callback
);
},
_setMembershipState: function(roomId, userId, membershipValue, reason,
callback) {
if (isFunction(reason)) { callback = reason; reason = undefined; }
var path = encodeUri(
"/rooms/$roomId/state/m.room.member/$userId",
{ $roomId: roomId, $userId: userId}
);
return this._doAuthedRequest(callback, "PUT", path, undefined, {
membership : membershipValue,
reason: reason
});
},
_membershipChange: function(roomId, userId, membership, reason,
callback) {
if (isFunction(reason)) { callback = reason; reason = undefined; }
var path = encodeUri("/rooms/$room_id/$membership", {
$room_id: roomId,
$membership: membership
});
var data = {
user_id: userId // may be undefined e.g. on leave
};
return this._doAuthedRequest(
callback, "POST", path, undefined, data
callback, "POST", path, undefined, {
user_id: userId, // may be undefined e.g. on leave
reason: reason
}
);
},
@@ -107,6 +145,19 @@ var init = function(exports){
);
},
roomInitialSync: function(roomId, limit, callback) {
if (isFunction(limit)) { callback = limit; limit = undefined; }
var path = encodeUri("/rooms/$roomId/initialSync",
{$roomId: roomId}
);
if (!limit) {
limit = 30;
}
return this._doAuthedRequest(
callback, "GET", path, { limit: limit }
);
},
// Internals
// =========
@@ -119,6 +170,7 @@ var init = function(exports){
_doRequest: function(callback, method, path, params, data) {
var fullUri = this.credentials.baseUrl + PREFIX + path;
console.log(" => %s", fullUri);
console.log(" %s", JSON.stringify(data));
if (!params) { params = {}; }
return request(
@@ -162,6 +214,10 @@ var init = function(exports){
}
};
};
var isFunction = function(value) {
return Object.prototype.toString.call(value) == "[object Function]";
};
};
if (typeof exports === 'undefined') {