Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zimbra-admin-api-js
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Public
zimbra-admin-api-js
Commits
1ada2a0b
Commit
1ada2a0b
authored
Apr 25, 2016
by
Patricio Bruna
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add and Remove DL Memebers
parent
35fe2033
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
182 additions
and
3 deletions
+182
-3
README.md
README.md
+18
-0
zimbra-admin-api.js
lib/zimbra-admin-api.js
+64
-0
zimbra-admin-api.js.map
lib/zimbra-admin-api.js.map
+1
-1
index.js
src/index.js
+28
-1
dictionary.js
src/utils/dictionary.js
+11
-0
distribution_list.js
src/zimbra/distribution_list.js
+10
-0
test.js
test/js/spec/test.js
+50
-1
No files found.
README.md
View file @
1ada2a0b
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
-
[
Accounts
](
#accounts
)
-
[
Accounts
](
#accounts
)
-
[
Cos
](
#cos
)
-
[
Cos
](
#cos
)
-
[
Domains
](
#domains
)
-
[
Domains
](
#domains
)
-
[
Distribution Lists
](
#distribution-lists
)
## Example
## Example
...
@@ -368,3 +369,20 @@ Return an Array of the Domain `DistributionList`s.
...
@@ -368,3 +369,20 @@ Return an Array of the Domain `DistributionList`s.
domain
.
getAllDistributionLists
(
callback
);
domain
.
getAllDistributionLists
(
callback
);
// [DistributionList, DistributionList]
// [DistributionList, DistributionList]
```
```
## Distribution Lists
### Add / Remove Members
```
javascript
dl
.
addMembers
(
'new_member@example.com'
,
callback
);
// {} if Success
dl
.
addMembers
([
'1@example.com'
,
'2@example.com'
],
callback
);
dl
.
removeMembers
(
'new_member@example.com'
,
callback
);
// {} if Success
dl
.
removeMembers
([
'1@example.com'
,
'2@example.com'
],
callback
);
// Return Error if any of the emails isn't a member
```
lib/zimbra-admin-api.js
View file @
1ada2a0b
...
@@ -374,6 +374,23 @@ return /******/ (function(modules) { // webpackBootstrap
...
@@ -374,6 +374,23 @@ return /******/ (function(modules) { // webpackBootstrap
request_data.params.params = { 'id': account_id, 'alias': alias };
request_data.params.params = { 'id': account_id, 'alias': alias };
this.performRequest(request_data);
this.performRequest(request_data);
}
}
// Add New members tos distributionlists
// members is an array of emails
}, {
key: 'addDistributionListMember',
value: function addDistributionListMember(dl_id, members, callback) {
var request_data = {};
request_data.params = this.requestParams();
request_data.request_name = 'AddDistributionListMember';
request_data.params.name = request_data.request_name + 'Request';
request_data.response_name = request_data.request_name + 'Response';
request_data.callback = callback;
request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = { id: dl_id, dlm: this.dictionary.convertToZimbraArray(members) };
this.performRequest(request_data);
}
}, {
}, {
key: 'getAccount',
key: 'getAccount',
value: function getAccount(identifier, callback) {
value: function getAccount(identifier, callback) {
...
@@ -605,6 +622,23 @@ return /******/ (function(modules) { // webpackBootstrap
...
@@ -605,6 +622,23 @@ return /******/ (function(modules) { // webpackBootstrap
this.remove('DistributionList', resource_data, callback);
this.remove('DistributionList', resource_data, callback);
}
}
// Add New members tos distributionlists
// members is one email or array of emails
}, {
key: 'removeDistributionListMember',
value: function removeDistributionListMember(dl_id, members, callback) {
var request_data = {};
request_data.params = this.requestParams();
request_data.request_name = 'RemoveDistributionListMember';
request_data.params.name = request_data.request_name + 'Request';
request_data.response_name = request_data.request_name + 'Response';
request_data.callback = callback;
request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = { id: dl_id, dlm: this.dictionary.convertToZimbraArray(members) };
this.performRequest(request_data);
}
// Search the Directory
// Search the Directory
// search_object = {
// search_object = {
// query: An LDAP query or null for everything,
// query: An LDAP query or null for everything,
...
@@ -12372,6 +12406,20 @@ return /******/ (function(modules) { // webpackBootstrap
...
@@ -12372,6 +12406,20 @@ return /******/ (function(modules) { // webpackBootstrap
var class_name = this.resourceToClass(resource.toLowerCase());
var class_name = this.resourceToClass(resource.toLowerCase());
return new class_name(object, client);
return new class_name(object, client);
}
}
// This return a string or array of objects
// useful for Zimbra functions that works with both
}, {
key: 'convertToZimbraArray',
value: function convertToZimbraArray(object) {
var elements = [].concat.apply([], [object]);
var result = [];
elements.forEach(function (el) {
result.push({ '_content': el });
});
return result;
}
}, {
}, {
key: 'resourceResponseName',
key: 'resourceResponseName',
value: function resourceResponseName(resource) {
value: function resourceResponseName(resource) {
...
@@ -13811,7 +13859,15 @@ return /******/ (function(modules) { // webpackBootstrap
...
@@ -13811,7 +13859,15 @@ return /******/ (function(modules) { // webpackBootstrap
return _this;
return _this;
}
}
// Add members to DL
(0, _createClass3.default)(DistributionList, [{
(0, _createClass3.default)(DistributionList, [{
key: 'addMembers',
value: function addMembers(members, callback) {
this.api.addDistributionListMember(this.id, members, callback);
}
}, {
key: 'parseMembers',
key: 'parseMembers',
value: function parseMembers(obj) {
value: function parseMembers(obj) {
var members = [];
var members = [];
...
@@ -13822,6 +13878,14 @@ return /******/ (function(modules) { // webpackBootstrap
...
@@ -13822,6 +13878,14 @@ return /******/ (function(modules) { // webpackBootstrap
}
}
return members;
return members;
}
}
// Remove members from DL
}, {
key: 'removeMembers',
value: function removeMembers(members, callback) {
this.api.removeDistributionListMember(this.id, members, callback);
}
}]);
}]);
return DistributionList;
return DistributionList;
}(_zimbra2.default); // Copyright (c) 2016 ZBox, Spa. All Rights Reserved.
}(_zimbra2.default); // Copyright (c) 2016 ZBox, Spa. All Rights Reserved.
lib/zimbra-admin-api.js.map
View file @
1ada2a0b
This diff is collapsed.
Click to expand it.
src/index.js
View file @
1ada2a0b
...
@@ -268,6 +268,20 @@ export default class ZimbraAdminApi {
...
@@ -268,6 +268,20 @@ export default class ZimbraAdminApi {
this
.
performRequest
(
request_data
);
this
.
performRequest
(
request_data
);
}
}
// Add New members tos distributionlists
// members is an array of emails
addDistributionListMember
(
dl_id
,
members
,
callback
)
{
const
request_data
=
{
};
request_data
.
params
=
this
.
requestParams
();
request_data
.
request_name
=
'AddDistributionListMember'
;
request_data
.
params
.
name
=
`
${
request_data
.
request_name
}
Request`
;
request_data
.
response_name
=
`
${
request_data
.
request_name
}
Response`
;
request_data
.
callback
=
callback
;
request_data
.
parse_response
=
this
.
parseEmptyResponse
;
request_data
.
params
.
params
=
{
id
:
dl_id
,
dlm
:
this
.
dictionary
.
convertToZimbraArray
(
members
)
};
this
.
performRequest
(
request_data
);
}
getAccount
(
identifier
,
callback
)
{
getAccount
(
identifier
,
callback
)
{
this
.
get
(
'Account'
,
identifier
,
callback
);
this
.
get
(
'Account'
,
identifier
,
callback
);
}
}
...
@@ -354,7 +368,6 @@ export default class ZimbraAdminApi {
...
@@ -354,7 +368,6 @@ export default class ZimbraAdminApi {
// type: (account|cos|dl|domain),
// type: (account|cos|dl|domain),
// identifier: (name or zimbraId)
// identifier: (name or zimbraId)
// }
// }
getGrants
(
target_data
,
grantee_data
,
callback
)
{
getGrants
(
target_data
,
grantee_data
,
callback
)
{
const
request_data
=
{
};
const
request_data
=
{
};
const
resource
=
'Grant'
;
const
resource
=
'Grant'
;
...
@@ -451,6 +464,20 @@ export default class ZimbraAdminApi {
...
@@ -451,6 +464,20 @@ export default class ZimbraAdminApi {
this
.
remove
(
'DistributionList'
,
resource_data
,
callback
);
this
.
remove
(
'DistributionList'
,
resource_data
,
callback
);
}
}
// Add New members tos distributionlists
// members is one email or array of emails
removeDistributionListMember
(
dl_id
,
members
,
callback
)
{
const
request_data
=
{
};
request_data
.
params
=
this
.
requestParams
();
request_data
.
request_name
=
'RemoveDistributionListMember'
;
request_data
.
params
.
name
=
`
${
request_data
.
request_name
}
Request`
;
request_data
.
response_name
=
`
${
request_data
.
request_name
}
Response`
;
request_data
.
callback
=
callback
;
request_data
.
parse_response
=
this
.
parseEmptyResponse
;
request_data
.
params
.
params
=
{
id
:
dl_id
,
dlm
:
this
.
dictionary
.
convertToZimbraArray
(
members
)
};
this
.
performRequest
(
request_data
);
}
// Search the Directory
// Search the Directory
// search_object = {
// search_object = {
// query: An LDAP query or null for everything,
// query: An LDAP query or null for everything,
...
...
src/utils/dictionary.js
View file @
1ada2a0b
...
@@ -42,6 +42,17 @@ export default class Dictionary {
...
@@ -42,6 +42,17 @@ export default class Dictionary {
return
new
class_name
(
object
,
client
);
return
new
class_name
(
object
,
client
);
}
}
// This return a string or array of objects
// useful for Zimbra functions that works with both
convertToZimbraArray
(
object
)
{
const
elements
=
[].
concat
.
apply
([],
[
object
]);
const
result
=
[];
elements
.
forEach
((
el
)
=>
{
result
.
push
({
'_content'
:
el
});
});
return
result
;
}
resourceResponseName
(
resource
)
{
resourceResponseName
(
resource
)
{
return
this
.
zimbra_resources
[
resource
.
toLowerCase
()].
response_name
;
return
this
.
zimbra_resources
[
resource
.
toLowerCase
()].
response_name
;
}
}
...
...
src/zimbra/distribution_list.js
View file @
1ada2a0b
...
@@ -9,6 +9,11 @@ export default class DistributionList extends Zimbra {
...
@@ -9,6 +9,11 @@ export default class DistributionList extends Zimbra {
this
.
members
=
this
.
parseMembers
(
dl_obj
);
this
.
members
=
this
.
parseMembers
(
dl_obj
);
}
}
// Add members to DL
addMembers
(
members
,
callback
)
{
this
.
api
.
addDistributionListMember
(
this
.
id
,
members
,
callback
);
}
parseMembers
(
obj
)
{
parseMembers
(
obj
)
{
let
members
=
[];
let
members
=
[];
if
(
obj
.
dlm
)
{
if
(
obj
.
dlm
)
{
...
@@ -19,4 +24,9 @@ export default class DistributionList extends Zimbra {
...
@@ -19,4 +24,9 @@ export default class DistributionList extends Zimbra {
return
members
;
return
members
;
}
}
// Remove members from DL
removeMembers
(
members
,
callback
)
{
this
.
api
.
removeDistributionListMember
(
this
.
id
,
members
,
callback
);
}
}
}
test/js/spec/test.js
View file @
1ada2a0b
...
@@ -491,6 +491,56 @@
...
@@ -491,6 +491,56 @@
});
});
});
});
it
(
'Add member to DL should work with only one'
,
function
(
done
){
let
api
=
new
ZimbraAdminApi
(
auth_data
);
let
member
=
Date
.
now
().
toString
()
+
'@customer.dev'
;
api
.
getDistributionList
(
'abierta@customer.dev'
,
function
(
err
,
data
){
if
(
err
)
console
.
log
(
err
);
const
dl
=
data
;
dl
.
addMembers
(
member
,
function
(
err
,
data
){
if
(
err
)
return
console
.
error
(
err
);
expect
(
err
).
to
.
be
.
null
;
done
();
});
});
});
it
(
'Add member to DL should work with array'
,
function
(
done
){
let
api
=
new
ZimbraAdminApi
(
auth_data
);
let
name
=
Date
.
now
().
toString
();
let
members
=
[
name
+
'@customer.dev'
,
name
+
'@zboxapp.dev'
];
api
.
getDistributionList
(
'abierta@customer.dev'
,
function
(
err
,
data
){
if
(
err
)
console
.
log
(
err
);
const
dl
=
data
;
dl
.
addMembers
(
members
,
function
(
err
,
data
){
if
(
err
)
return
console
.
error
(
err
);
expect
(
err
).
to
.
be
.
null
;
done
();
});
});
});
it
(
'Remove members works with an array'
,
function
(
done
){
let
api
=
new
ZimbraAdminApi
(
auth_data
);
let
name
=
Date
.
now
().
toString
();
let
members
=
[
name
+
'@customer.dev'
,
name
+
'@zboxapp.dev'
];
api
.
getDistributionList
(
'abierta@customer.dev'
,
function
(
err
,
data
){
if
(
err
)
console
.
log
(
err
);
const
dl
=
data
;
const
original_members
=
dl
.
members
;
dl
.
addMembers
(
members
,
function
(
err
,
data
){
if
(
err
)
return
console
.
error
(
err
);
dl
.
removeMembers
(
members
,
function
(
err
,
data
){
if
(
err
)
return
console
.
error
(
err
);
api
.
getDistributionList
(
'abierta@customer.dev'
,
function
(
err
,
data
){
expect
(
original_members
.
length
).
to
.
be
.
equal
(
data
.
members
.
length
);
done
();
});
});
});
});
});
});
});
describe
(
'Grants tests'
,
function
()
{
describe
(
'Grants tests'
,
function
()
{
...
@@ -501,7 +551,6 @@
...
@@ -501,7 +551,6 @@
api
.
getGrants
(
null
,
grantee_data
,
function
(
err
,
data
){
api
.
getGrants
(
null
,
grantee_data
,
function
(
err
,
data
){
if
(
err
)
console
.
log
(
err
);
if
(
err
)
console
.
log
(
err
);
expect
(
data
[
0
].
constructor
.
name
).
to
.
equal
(
'Grant'
);
expect
(
data
[
0
].
constructor
.
name
).
to
.
equal
(
'Grant'
);
expect
(
data
[
0
].
right
.
_content
).
to
.
equal
(
"domainAdminRights"
);
done
();
done
();
});
});
});
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment