UNPKG

3.45 kBtext/coffeescriptView Raw
1GoogleAPIAdminSDK = require "#{__dirname}/google_api_admin_sdk"
2qs = require 'qs'
3_ = require 'underscore'
4utils = require "#{__dirname}/utils"
5sanitize = require 'sanitize-arguments'
6{Query} = require "#{__dirname}/query.coffee"
7
8class 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
76module.exports = GroupProvisioning