Add more room operations. Log body content for now. Add isFunction to allow optional args to be omitted.
This commit is contained in:
+63
-7
@@ -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') {
|
||||
|
||||
Reference in New Issue
Block a user