1 | var Promise = require('promise');
|
2 | var winston = require('./winston');
|
3 |
|
4 | var Group = function(config, single, plural){
|
5 | var request = require('./c21request.js')(config)
|
6 |
|
7 | return {
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | create: function(name, members, attributes, group_id){
|
14 | var create = {}
|
15 | create["group_name"] = name;
|
16 |
|
17 | let group_members = {};
|
18 | members.forEach(member => {
|
19 | group_members[member] = 1;
|
20 | });
|
21 | create["group_members"] = group_members;
|
22 |
|
23 | create["group_id"] = group_id;
|
24 |
|
25 | if (attributes) {
|
26 | create["attributes"] = attributes;
|
27 | }
|
28 |
|
29 | winston.debug("chat21-node-sdk group.create", create);
|
30 |
|
31 |
|
32 | var admintoken = "";
|
33 | if (config.admintoken) {
|
34 | admintoken = "?token=" + encodeURIComponent(config.admintoken);
|
35 | }
|
36 |
|
37 |
|
38 | return new Promise(function(resolve, reject){
|
39 | request.post('/' + plural+ admintoken, create).then(function(data){
|
40 | winston.debug("chat21-node-sdk group.created", data);
|
41 | resolve(data)
|
42 | }).catch(function(err){
|
43 | reject(err)
|
44 | })
|
45 | })
|
46 | },
|
47 |
|
48 | setMembers: function(members, group_id){
|
49 | var join = {}
|
50 |
|
51 | let group_members = {};
|
52 | members.forEach(member => {
|
53 | group_members[member] = 1;
|
54 | });
|
55 |
|
56 | join["members"] = group_members;
|
57 |
|
58 | var admintoken = "";
|
59 | if (config.admintoken) {
|
60 | admintoken = "?token=" + encodeURIComponent(config.admintoken);
|
61 | }
|
62 |
|
63 | winston.debug("chat21-node-sdk join", join);
|
64 |
|
65 | return new Promise(function(resolve, reject) {
|
66 | request.put('/' + plural+'/'+group_id+'/members' + admintoken, join).then(function(data){
|
67 | winston.debug("chat21-node-sdk data", data);
|
68 | resolve(data)
|
69 | }).catch(function(err){
|
70 | reject(err)
|
71 | })
|
72 | })
|
73 | },
|
74 |
|
75 |
|
76 | join: function(member_id, group_id){
|
77 | var join = {}
|
78 | join["member_id"] = member_id;
|
79 |
|
80 | var admintoken = "";
|
81 | if (config.admintoken) {
|
82 | admintoken = "?token=" + encodeURIComponent(config.admintoken);
|
83 | }
|
84 |
|
85 |
|
86 | return new Promise(function(resolve, reject){
|
87 | request.post('/' + plural+'/'+group_id+'/members' + admintoken, join).then(function(data){
|
88 | winston.debug("chat21-node-sdk data", data);
|
89 | resolve(data)
|
90 | }).catch(function(err){
|
91 | reject(err)
|
92 | })
|
93 | })
|
94 | },
|
95 |
|
96 | leave: function(member_id, group_id){
|
97 |
|
98 | var admintoken = "";
|
99 | if (config.admintoken) {
|
100 | admintoken = "?token=" + encodeURIComponent(config.admintoken);
|
101 | }
|
102 |
|
103 | return new Promise(function(resolve, reject){
|
104 | request.delete('/' + plural+'/'+group_id+'/members/' + member_id + admintoken).then(function(data){
|
105 | winston.debug("chat21-node-sdk data", data);
|
106 | resolve(data)
|
107 | }).catch(function(err){
|
108 | reject(err)
|
109 | })
|
110 | })
|
111 | },
|
112 |
|
113 |
|
114 | update: function(name, owner, attributes, group_id){
|
115 | var update = {}
|
116 |
|
117 |
|
118 | update["group_name"] = name;
|
119 | update["group_owner"] = owner;
|
120 |
|
121 |
|
122 | if (attributes) {
|
123 | update["attributes"] = attributes;
|
124 | }
|
125 |
|
126 | winston.debug("chat21-node-sdk group.update", update);
|
127 |
|
128 |
|
129 | var admintoken = "";
|
130 | if (config.admintoken) {
|
131 | admintoken = "?token=" + encodeURIComponent(config.admintoken);
|
132 | }
|
133 |
|
134 |
|
135 | return new Promise(function(resolve, reject){
|
136 | request.put('/' + plural+'/'+group_id+ admintoken, update).then(function(data){
|
137 | winston.debug("chat21-node-sdk group.updated", data);
|
138 | resolve(data)
|
139 | }).catch(function(err){
|
140 | reject(err)
|
141 | })
|
142 | })
|
143 | },
|
144 |
|
145 |
|
146 |
|
147 | updateAttributes: function(attributes, group_id){
|
148 |
|
149 | var update = {}
|
150 |
|
151 |
|
152 | if (attributes) {
|
153 | update["attributes"] = attributes;
|
154 | }
|
155 |
|
156 | var admintoken = "";
|
157 | if (config.admintoken) {
|
158 | admintoken = "?token=" + encodeURIComponent(config.admintoken);
|
159 | }
|
160 |
|
161 | winston.debug("chat21-node-sdk group attributes", update);
|
162 |
|
163 | return new Promise(function(resolve, reject) {
|
164 | request.put('/' + plural+'/'+group_id+'/attributes' + admintoken, update).then(function(data){
|
165 | winston.debug("chat21-node-sdk data", data);
|
166 | resolve(data)
|
167 | }).catch(function(err){
|
168 | reject(err)
|
169 | })
|
170 | })
|
171 | },
|
172 |
|
173 |
|
174 |
|
175 | }
|
176 | }
|
177 |
|
178 | module.exports = Group
|