@chat21/chat21-node-sdk
Version:
Chat21 Nodejs SDK
179 lines (126 loc) • 4.35 kB
JavaScript
var Promise = require('promise');
var winston = require('./winston');
var Group = function(config, single, plural){
var request = require('./c21request.js')(config)
return {
create: function(name, members, attributes, group_id){
var create = {}
create["group_name"] = name;
let group_members = {};
members.forEach(member => {
group_members[member] = 1;
});
create["group_members"] = group_members;
create["group_id"] = group_id;
if (attributes) {
create["attributes"] = attributes;
}
winston.debug("chat21-node-sdk group.create", create);
var admintoken = "";
if (config.admintoken) {
admintoken = "?token=" + encodeURIComponent(config.admintoken);
}
return new Promise(function(resolve, reject){
request.post('/' + plural+ admintoken, create).then(function(data){
winston.debug("chat21-node-sdk group.created", data);
resolve(data)
}).catch(function(err){
reject(err)
})
})
},
setMembers: function(members, group_id){
var join = {}
let group_members = {};
members.forEach(member => {
group_members[member] = 1;
});
join["members"] = group_members;
var admintoken = "";
if (config.admintoken) {
admintoken = "?token=" + encodeURIComponent(config.admintoken);
}
winston.debug("chat21-node-sdk join", join);
return new Promise(function(resolve, reject) {
request.put('/' + plural+'/'+group_id+'/members' + admintoken, join).then(function(data){
winston.debug("chat21-node-sdk data", data);
resolve(data)
}).catch(function(err){
reject(err)
})
})
},
join: function(member_id, group_id){
var join = {}
join["member_id"] = member_id;
var admintoken = "";
if (config.admintoken) {
admintoken = "?token=" + encodeURIComponent(config.admintoken);
}
return new Promise(function(resolve, reject){
request.post('/' + plural+'/'+group_id+'/members' + admintoken, join).then(function(data){
winston.debug("chat21-node-sdk data", data);
resolve(data)
}).catch(function(err){
reject(err)
})
})
},
leave: function(member_id, group_id){
var admintoken = "";
if (config.admintoken) {
admintoken = "?token=" + encodeURIComponent(config.admintoken);
}
return new Promise(function(resolve, reject){
request.delete('/' + plural+'/'+group_id+'/members/' + member_id + admintoken).then(function(data){
winston.debug("chat21-node-sdk data", data);
resolve(data)
}).catch(function(err){
reject(err)
})
})
},
// updateGroupWithId(group_id, group_name, group_owner, group_members, app_id, attributes, invited_members) {
update: function(name, owner, attributes, group_id){
var update = {}
update["group_name"] = name;
update["group_owner"] = owner;
if (attributes) {
update["attributes"] = attributes;
}
winston.debug("chat21-node-sdk group.update", update);
var admintoken = "";
if (config.admintoken) {
admintoken = "?token=" + encodeURIComponent(config.admintoken);
}
return new Promise(function(resolve, reject){
request.put('/' + plural+'/'+group_id+ admintoken, update).then(function(data){
winston.debug("chat21-node-sdk group.updated", data);
resolve(data)
}).catch(function(err){
reject(err)
})
})
},
updateAttributes: function(attributes, group_id){
var update = {}
if (attributes) {
update["attributes"] = attributes;
}
var admintoken = "";
if (config.admintoken) {
admintoken = "?token=" + encodeURIComponent(config.admintoken);
}
winston.debug("chat21-node-sdk group attributes", update);
return new Promise(function(resolve, reject) {
request.put('/' + plural+'/'+group_id+'/attributes' + admintoken, update).then(function(data){
winston.debug("chat21-node-sdk data", data);
resolve(data)
}).catch(function(err){
reject(err)
})
})
},
}
}
module.exports = Group