Attempted add/remove from roles

This commit is contained in:
abalabahaha
2015-12-05 12:13:24 -08:00
parent d2147304c8
commit de19475ae0
2 changed files with 87 additions and 1 deletions

View File

@@ -301,6 +301,28 @@ export default class Client extends EventEmitter {
return this.removeMemberFromRole(member, role, callback);
}
//def addMemberToRole
addMemberToRoles(member, roles, callback = (/*err*/) => {}) {
return this.internal.addMemberToRoles(member, roles)
.then(callback, errCB(callback));
}
// def addUserToRole
addUserToRoles(member, roles, callback = (/*err*/) => {}) {
return this.addMemberToRoles(member, roles, callback);
}
// def removeMemberFromRole
removeMemberFromRoles(member, roles, callback = (/*err*/) => {}) {
return this.internal.removeMemberFromRoles(member, roles)
.then(callback, errCB(callback));
}
// def removeUserFromRole
removeUserFromRoles(member, roles, callback = (/*err*/) => {}) {
return this.removeMemberFromRoles(member, roles, callback);
}
// def createInvite
createInvite(chanServ, options, callback = (/*err, invite*/) => {}) {

View File

@@ -588,6 +588,36 @@ export default class InternalClient {
.end();
}
//def addMemberToRole
addMemberToRoles(member, roles) {
member = this.resolver.resolveUser(member);
if (!member) {
return Promise.reject(new Error("member not in server"));
}
if (!Array.isArray(roles) || roles.length === 0) {
return Promise.reject(new Error("invalid array of roles"));
}
var roleIDS = roles[0].server.memberMap[member.id].roles.map(r => r.id);
for(var role of roles) {
if (!role.server.memberMap[member.id]) {
return Promise.reject(new Error("member not in server"));
}
roleIDS.concat(role.id);
}
return request
.patch(Endpoints.SERVER_MEMBERS(role.server.id) + "/" + member.id)
.set("authorization", this.token)
.send({
roles: roleIDS
})
.end();
}
//def removeMemberFromRole
removeMemberFromRole(member, role) {
member = this.resolver.resolveUser(member);
@@ -605,7 +635,7 @@ export default class InternalClient {
for (var item in roleIDS) {
if (roleIDS[item] === role.id) {
roleIDS.splice(item, 1);
//missing break?
break;
}
}
@@ -616,7 +646,41 @@ export default class InternalClient {
roles: roleIDS
})
.end();
}
//def removeMemberFromRoles
removeMemberFromRoles(member, roles) {
member = this.resolver.resolveUser(member);
if (!member) {
return Promise.reject(new Error("member not in server"));
}
if (!Array.isArray(roles) || roles.length === 0) {
return Promise.reject(new Error("invalid array of roles"));
}
var roleIDS = roles[0].server.memberMap[member.id].roles.map(r => r.id);
for(var role of roles) {
if (!role.server.memberMap[member.id]) {
return Promise.reject(new Error("member not in server"));
}
for (var item in roleIDS) {
if (roleIDS[item] === role.id) {
roleIDS.splice(item, 1);
break;
}
}
}
return request
.patch(Endpoints.SERVER_MEMBERS(role.server.id) + "/" + member.id)
.set("authorization", this.token)
.send({
roles: roleIDS
})
.end();
}
// def createInvite