1 | GoogleAPIAdminSDK = require "#{__dirname}/google_api_admin_sdk"
|
2 | qs = require 'qs'
|
3 | _ = require 'underscore'
|
4 | utils = require "#{__dirname}/utils"
|
5 | sanitize = require 'sanitize-arguments'
|
6 | {Query} = require "#{__dirname}/query.coffee"
|
7 |
|
8 | class GroupProvisioning extends GoogleAPIAdminSDK
|
9 | list: (params, cb) ->
|
10 | arglist = sanitize arguments, GroupProvisioning.list, [Object, Function]
|
11 | args = _.object ['params', 'cb'], arglist
|
12 | die = utils.die_fn args.cb
|
13 | if not args.params?
|
14 | return die "GroupProvisioning::list expected (Object params[, callback])"
|
15 | valid_params = ['customer', 'domain', 'maxResults', 'pageToken', 'userKey', 'fields']
|
16 | for param, val of args.params
|
17 | return die "GroupProvisioning::list invalid param '#{param}'" if not _(valid_params).contains(param)
|
18 | uri = "https://www.googleapis.com/admin/directory/v1/groups"
|
19 | opts = { json: true, qs: args.params, uri: uri}
|
20 | q = new Query @, opts
|
21 | return q unless args.cb?
|
22 | q.exec args.cb
|
23 |
|
24 | get: (group_key, cb) ->
|
25 | arglist = sanitize arguments, GroupProvisioning.get, [String, Function]
|
26 | args = _.object ['group_key', 'cb'], arglist
|
27 | die = utils.die_fn args.cb
|
28 | if not args.group_key?
|
29 | return die 'GroupProvisioning::get expected (String group_key[, callback])'
|
30 | uri = "https://www.googleapis.com/admin/directory/v1/groups/#{args.group_key}"
|
31 | opts = { json: true, uri: uri}
|
32 | q = new Query @, opts
|
33 | return q unless args.cb?
|
34 | q.exec args.cb
|
35 |
|
36 | insert: (properties, fields, cb) ->
|
37 | arglist = sanitize arguments, GroupProvisioning.insert, [Object, String, Function]
|
38 | args = _.object ['properties', 'fields', 'cb'], arglist
|
39 | die = utils.die_fn args.cb
|
40 | if not args.properties?
|
41 | return die 'GroupProvisioning::insert expected (Object properties[, String fields, callback])'
|
42 | uri = "https://www.googleapis.com/admin/directory/v1/groups"
|
43 | opts = { method: 'post', json: args.properties, uri: uri }
|
44 | opts.qs = {fields: args.fields} if args.fields?
|
45 | q = new Query @, opts
|
46 | return q unless args.cb?
|
47 | q.exec args.cb
|
48 |
|
49 | delete: (group_key, cb) ->
|
50 | arglist = sanitize arguments, GroupProvisioning.delete, [String, Function]
|
51 | args = _.object ['group_key', 'cb'], arglist
|
52 | die = utils.die_fn args.cb
|
53 | if not args.group_key?
|
54 | return die 'GroupProvisioning::delete expected (String group_key[, callback])'
|
55 | uri = "https://www.googleapis.com/admin/directory/v1/groups/#{args.group_key}"
|
56 | opts = { method: 'delete', json: true, uri: uri }
|
57 | opts.qs = {fields: args.fields} if args.fields?
|
58 | q = new Query @, opts
|
59 | return q unless args.cb?
|
60 | q.exec args.cb
|
61 |
|
62 | patch: (group_key, body, fields, cb) ->
|
63 | arglist = sanitize arguments, GroupProvisioning.patch, [String, Object, String, Function]
|
64 | args = _.object ['group_key', 'body', 'fields', 'cb'], arglist
|
65 | die = utils.die_fn args.cb
|
66 | if not args.group_key?
|
67 | return die 'GroupProvisioning::delete expected (String group_key[, Object body, String fields, callback])'
|
68 | return die "group_key cannot be an email address" if utils.is_email args.group_key
|
69 | uri = "https://www.googleapis.com/admin/directory/v1/groups/#{args.group_key}"
|
70 | uri += "?#{qs.stringify {fields: args.fields}}" if args.fields?
|
71 | opts = { method: 'patch', uri: uri, json: (args.body or true) }
|
72 | q = new Query @, opts
|
73 | return q unless args.cb?
|
74 | q.exec args.cb
|
75 |
|
76 | module.exports = GroupProvisioning
|