Class: GAppsProvisioning::ProvisioningApi

Inherits:
Object
  • Object
show all
Defined in:
lib/gappsprovisioning/provisioningapi.rb

Constant Summary collapse

@@google_host =
'apps-apis.google.com'
@@google_port =
443

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mail, passwd, proxy = nil, proxy_port = nil, proxy_user = nil, proxy_passwd = nil) ⇒ ProvisioningApi

Creates a new ProvisioningApi object

 mail : Google Apps domain administrator e-mail (string)
 passwd : Google Apps domain administrator password (string)
 proxy : (optional) host name, or IP, of the proxy (string)
 proxy_port : (optional) proxy port number (numeric)
 proxy_user : (optional) login for authenticated proxy only (string)
 proxy_passwd : (optional) password for authenticated proxy only (string)

The domain name is extracted from the mail param value.

Examples :

standard : no proxy
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
proxy :
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd','domain.proxy.com',8080)
authenticated proxy :
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd','domain.proxy.com',8080,'foo','bAr')


142
143
144
145
146
147
148
149
150
# File 'lib/gappsprovisioning/provisioningapi.rb', line 142

def initialize(mail, passwd, proxy=nil, proxy_port=nil, proxy_user=nil, proxy_passwd=nil)
  domain = mail.split('@')[1]
  @action = setup_actions(domain)
  conn = Connection.new(@@google_host, @@google_port, proxy, proxy_port, proxy_user, proxy_passwd)
  @connection = conn
  @token = (mail, passwd)
  @headers = {'Content-Type'=>'application/atom+xml', 'Authorization'=> 'GoogleLogin auth='+token}
  return @connection
end

Instance Attribute Details

#tokenObject (readonly)

authentication token, valid up to 24 hours after the last connection



121
122
123
# File 'lib/gappsprovisioning/provisioningapi.rb', line 121

def token
  @token
end

Instance Method Details

#add_address_to_email_list(email_list, address) ⇒ Object Also known as: addRecipientToEmailList

Adds an email address to an email list in your domain and returns an EmailListRecipientEntry instance. You can add addresses from other domains to your email list. Omit “@mydomain.com” in the email list name. ex :

myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
new_address = myapps.add_address_to_email_list('mylist', '[email protected]')


518
519
520
521
522
523
524
# File 'lib/gappsprovisioning/provisioningapi.rb', line 518

def add_address_to_email_list(email_list,address)
  msg = RequestMessage.new
  msg.about_email_list(email_list)
  msg.about_who(address)
  response  = request(:subscription_add, email_list+'/recipient/',@headers, msg.to_s)
  email_list_recipient_entry = EmailListRecipientEntry.new(response.elements["entry"])
end

#add_member_to_group(member_id, group_id) ⇒ Object Also known as: addMemberToGroup

Add a Member to a Group This method takes two arguments:

The group_id argument identifies the group to which the address 
  is being added.
The member_id argument identifies the name of the member that is 
  being added to a group.


385
386
387
388
389
390
391
# File 'lib/gappsprovisioning/provisioningapi.rb', line 385

def add_member_to_group(member_id, group_id)
  msg = RequestMessage.new(false)
  msg.about_member(member_id)
  add_member = group_id+'/member'
  xml_response = request(:group_add_member, add_member, @headers, msg.to_s)
  member_entry = MemberEntry.new(xml_response.elements["entry"])
end

#add_owner_to_group(owner_email, group_id) ⇒ Object Also known as: addOwnerToGroup

Methods for Group Owners



411
412
413
414
415
416
417
# File 'lib/gappsprovisioning/provisioningapi.rb', line 411

def add_owner_to_group(owner_email, group_id)
  msg = RequestMessage.new(false)
  msg.about_owner(owner_email)
  add_owner = group_id+'/owner'
  xml_response = request(:group_add_member, add_owner, @headers, msg.to_s)
  owner_entry = OwnerEntry.new(xml_response.elements["entry"])
end

#create_email_list(name) ⇒ Object Also known as: createEmailList

Creates an email list in your domain and returns an EmailListEntry

ex :  
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
list= myapps.create_email_lists("mylist")


475
476
477
478
479
480
# File 'lib/gappsprovisioning/provisioningapi.rb', line 475

def create_email_list(name)
  msg = RequestMessage.new
  msg.about_email_list(name)
  response  = request(:email_list_create,nil,@headers, msg.to_s)
  email_list_entry = EmailListEntry.new(response.elements["entry"])
end

#create_group(group_id, group_name, description, email_permission) ⇒ Object Also known as: createGroup

Groups API This method takes four arguments:

The group_id (required) argument identifies the ID of the new group.
The group_name (required) argument identifies the name of the group being added.
The description argument provides a general description of the group.
The email_permission argument sets the permissions level of the group.
  Owner - Owners of the group
  Member - Members of the group
  Domain - Any user who belongs to the same domain as the group
  Anyone - Any user

Note: A newly created group does not have any subscribers. You must call the add_member_to_group method to add members to a group.



338
339
340
341
342
343
# File 'lib/gappsprovisioning/provisioningapi.rb', line 338

def create_group(group_id, group_name, description, email_permission)
  msg = RequestMessage.new(false)
  msg.about_group(group_id, group_name, description, email_permission)
  xml_response = request(:group_create, nil, @headers, msg.to_s)
  group_entry = GroupEntry.new(xml_response.elements["entry"])
end

#create_nickname(username, nickname) ⇒ Object Also known as: createNickname

Creates a nickname for the username in your domain and returns a NicknameEntry instance

myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  mynewnick = myapps.create_nickname('jsmith', 'john.smith')


300
301
302
303
304
305
306
# File 'lib/gappsprovisioning/provisioningapi.rb', line 300

def create_nickname(username,nickname)
  msg = RequestMessage.new
  msg.(username)
  msg.about_nickname(nickname)
  response  = request(:nickname_create,nil,@headers, msg.to_s)
  nickname_entry = NicknameEntry.new(response.elements["entry"])
end

#create_user(username, given_name, family_name, password, passwd_hash_function = nil, quota = nil, suspended = nil) ⇒ Object Also known as: createUser

Creates an account in your domain, returns a UserEntry instance

params :
  username, given_name, family_name and password are required
  passwd_hash_function (optional) : nil (default) or "SHA-1"
  quota (optional) : nil (default) or integer for limit in MB
ex :  
  myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  user = myapps.create('jsmith', 'John', 'Smith', 'p455wD')

By default, a new user must change his password at first login. Please use update_user if you want to change this just after the creation.



198
199
200
201
202
203
204
205
# File 'lib/gappsprovisioning/provisioningapi.rb', line 198

def create_user(username, given_name, family_name, password, passwd_hash_function=nil, quota=nil, suspended=nil)
  msg = RequestMessage.new
  msg.(username,password,passwd_hash_function,"false",suspended,"true")
  msg.about_name(family_name, given_name)
  msg.about_quota(quota.to_s) if quota
  response  = request(:user_create,nil,@headers, msg.to_s)
  user_entry = UserEntry.new(response.elements["entry"])
end

#delete_email_list(name) ⇒ Object Also known as: deleteEmailList

Deletes an email list in your domain. Omit “@mydomain.com” in the email list name.

ex :  
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
myapps.delete_email_lists("mylist")


486
487
488
# File 'lib/gappsprovisioning/provisioningapi.rb', line 486

def delete_email_list(name)
  response  = request(:email_list_delete,name,@headers)
end

#delete_group(group_id) ⇒ Object Also known as: deleteGroup



375
376
377
# File 'lib/gappsprovisioning/provisioningapi.rb', line 375

def delete_group(group_id)
  response = request(:group_delete, group_id, @headers)
end

#delete_nickname(nickname) ⇒ Object Also known as: deleteNickname

Deletes the nickname in your domain

myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  myapps.delete_nickname('john.smith')


311
312
313
# File 'lib/gappsprovisioning/provisioningapi.rb', line 311

def delete_nickname(nickname)
  response  = request(:nickname_delete,nickname,@headers)
end

#delete_user(username) ⇒ Object Also known as: deleteUser

Deletes an account in your domain

ex :
  myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  myapps.delete('jsmith')


261
262
263
# File 'lib/gappsprovisioning/provisioningapi.rb', line 261

def delete_user(username)
  response  = request(:user_delete,username,@headers)
end

#is_member?(member_id, group_id) ⇒ Boolean Also known as: isMember

Returns:

  • (Boolean)


400
401
402
403
# File 'lib/gappsprovisioning/provisioningapi.rb', line 400

def is_member?(member_id, group_id)
  membership = group_id+'/member/'+member_id
  request_valid_object?(:group_retrieve, membership, @headers)
end

#is_owner?(owner_email, group_id) ⇒ Boolean Also known as: isOwner

Returns:

  • (Boolean)


426
427
428
429
# File 'lib/gappsprovisioning/provisioningapi.rb', line 426

def is_owner?(owner_email, group_id)
  ownership = group_id+'/owner/'+owner_email
  request_valid_object?(:group_retrieve, ownership, @headers)
end

#remove_address_from_email_list(address, email_list) ⇒ Object Also known as: removeRecipientFromEmailList

Removes an address from an email list.

ex :
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
myapps.remove_address_from_email_list('[email protected]', 'mylist')


530
531
532
# File 'lib/gappsprovisioning/provisioningapi.rb', line 530

def remove_address_from_email_list(address,email_list)
  response  = request(:subscription_remove, email_list+'/recipient/'+address,@headers)
end

#remove_member_from_group(member_id, group_id) ⇒ Object Also known as: removeMemberFromGroup



405
406
407
408
# File 'lib/gappsprovisioning/provisioningapi.rb', line 405

def remove_member_from_group(member_id, group_id)
  membership = group_id+'/member/'+member_id
  str_response = request(:group_delete, membership, @headers)
end

#remove_owner_from_group(owner_email, group_id) ⇒ Object Also known as: removeOwnerFromGroup



431
432
433
434
# File 'lib/gappsprovisioning/provisioningapi.rb', line 431

def remove_owner_from_group(owner_email, group_id)
  ownership = group_id+'/owner/'+owner_email
  xml_response = request(:group_delete, ownership, @headers)
end

#restore_user(username) ⇒ Object Also known as: restoreUser

Restores a suspended account in your domain, returns a UserEntry instance

ex :
  myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  user = myapps.restore('jsmith')
  puts user.suspended   => "false"


249
250
251
252
253
254
255
# File 'lib/gappsprovisioning/provisioningapi.rb', line 249

def restore_user(username)
  msg = RequestMessage.new
  msg.(username,nil,nil,nil,"false")
  msg.add_path('https://'+@@google_host+@action[:user_update][:path]+username)
  response  = request(:user_update,username,@headers, msg.to_s)
  user_entry = UserEntry.new(response.elements["entry"])
end

#retrieve_all_email_listsObject Also known as: retrieveAllEmailLists

Returns an EmailListEntry array for the whole domain

ex :  
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
all_lists = myapps.retrieve_all_email_lists
  all_lists.each {|list| puts list.email_list }


453
454
455
456
457
# File 'lib/gappsprovisioning/provisioningapi.rb', line 453

def retrieve_all_email_lists
  xml_response = request(:email_list_retrieve_in_domain, nil, @headers)
  email_list_feed = Feed.new(xml_response.elements["feed"],  EmailListEntry) 
  email_list_feed = add_next_feeds(email_list_feed, xml_response, EmailListEntry)
end

#retrieve_all_groupsObject Also known as: retrieveAllGroups



369
370
371
372
373
# File 'lib/gappsprovisioning/provisioningapi.rb', line 369

def retrieve_all_groups
  # start_at = '?start='+start
  xml_response = request(:group_retrieve, nil, @headers)
  group_feed = Feed.new(xml_response.elements["feed"], GroupEntry) 
end

#retrieve_all_members(group_id) ⇒ Object Also known as: retrieveAllMembers



393
394
395
396
397
398
# File 'lib/gappsprovisioning/provisioningapi.rb', line 393

def retrieve_all_members(group_id)
  all_members = group_id+'/member'
  # all_members << '&start='+start
  xml_response = request(:group_retrieve, all_members, @headers)
  member_feed = Feed.new(xml_response.elements["feed"], MemberEntry) 
end

#retrieve_all_nicknamesObject Also known as: retrieveAllNicknames

Returns a NicknameEntry array for the whole domain. May take a while depending on the number of users in your domain. myapps = ProvisioningApi.new(‘[email protected]’,‘PaSsWoRd’)

allnicks = myapps.retrieve_all_nicknames
allnicks.each {|nick| puts nick.nickname }


291
292
293
294
295
# File 'lib/gappsprovisioning/provisioningapi.rb', line 291

def retrieve_all_nicknames
  xml_response = request(:nickname_retrieve_all_in_domain, nil, @headers)
  nicknames_feed = Feed.new(xml_response.elements["feed"],  NicknameEntry)
  nicknames_feed = add_next_feeds(nicknames_feed, xml_response, NicknameEntry)
end

#retrieve_all_owners(group_id) ⇒ Object Also known as: retrieveAllOwners



419
420
421
422
423
424
# File 'lib/gappsprovisioning/provisioningapi.rb', line 419

def retrieve_all_owners(group_id)
  all_owners = group_id+'/member'
  # all_owners << '&start='+start
  xml_response = request(:group_retrieve, all_owners, @headers)
  owner_feed = Feed.new(xml_response.elements["feed"], OwnerEntry) 
end

#retrieve_all_recipients(email_list) ⇒ Object Also known as: retrieveAllRecipients

Returns an EmailListRecipientEntry array for an email list.

ex :  
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
recipients = myapps.retrieve_all_recipients('mylist')  <= do not write "[email protected]", write "mylist" only.
  recipients.each {|recipient| puts recipient.email }


495
496
497
498
499
500
# File 'lib/gappsprovisioning/provisioningapi.rb', line 495

def retrieve_all_recipients(email_list)
  param = email_list+'/recipient/'
  xml_response = request(:subscription_retrieve, param, @headers)
  email_list_recipient_feed = Feed.new(xml_response.elements["feed"],  EmailListRecipientEntry) 
  email_list_recipient_feed = add_next_feeds(email_list_recipient_feed, xml_response, EmailListRecipientEntry)
end

#retrieve_all_usersObject Also known as: retrieveAllUsers

Returns a UserEntry array populated with all the users in the domain. May take a while depending on the number of users in your domain.

ex :  
  myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  list= myapps.retrieve_all_users
  list.each{ |user| puts user.username} 
  puts 'nb users : ',list.size


171
172
173
174
175
# File 'lib/gappsprovisioning/provisioningapi.rb', line 171

def retrieve_all_users
  response = request(:user_retrieve_all,nil,@headers)
  user_feed = Feed.new(response.elements["feed"],  UserEntry)
  user_feed = add_next_feeds(user_feed, response, UserEntry)
end

#retrieve_email_lists(email_adress) ⇒ Object Also known as: retrieveEmailLists

Obsolete: EmailList API Returns an EmailListEntry array from an email adress

ex :  
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
mylists = myapps.retrieve_email_lists('jsmith')   <= you could search from '[email protected]' too 
  mylists.each {|list| puts list.email_list }


442
443
444
445
446
# File 'lib/gappsprovisioning/provisioningapi.rb', line 442

def retrieve_email_lists(email_adress)
  xml_response = request(:email_list_retrieve_for_an_email, email_adress, @headers)
  email_list_feed = Feed.new(xml_response.elements["feed"],  EmailListEntry) 
  email_list_feed = add_next_feeds(email_list_feed, xml_response, EmailListEntry)
end

#retrieve_group(group_id) ⇒ Object Also known as: retrieveGroup



345
346
347
348
# File 'lib/gappsprovisioning/provisioningapi.rb', line 345

def retrieve_group(group_id)
  xml_response = request(:group_retrieve, group_id, @headers)
  group_entry = GroupEntry.new(xml_response.elements["entry"])
end

#retrieve_groups(member_id, direct_only = true) ⇒ Object Also known as: retrieveGroups

Retrieve all Groups for a Member This method takes two arguments:

The member_id (required) argument identifies the ID of a hosted user 
  for which you want to retrieve group subscriptions.
If true, direct_only identifies only members with direct association.


362
363
364
365
366
367
# File 'lib/gappsprovisioning/provisioningapi.rb', line 362

def retrieve_groups(member_id, direct_only=true)
  for_member = '?member='+member_id
  for_member << '&directOnly=true' if direct_only
  xml_response = request(:group_retrieve, for_member, @headers)
  group_feed = Feed.new(xml_response.elements["feed"], GroupEntry) 
end

#retrieve_nickname(nickname) ⇒ Object Also known as: retrieveNickname

Returns a NicknameEntry instance from a nickname

ex :  
  myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  nickname = myapps.retrieve_nickname('jsmith')
  puts "login : "+nickname.login


271
272
273
274
# File 'lib/gappsprovisioning/provisioningapi.rb', line 271

def retrieve_nickname(nickname)
  xml_response = request(:nickname_retrieve, nickname, @headers)
  nickname_entry = NicknameEntry.new(xml_response.elements["entry"])
end

#retrieve_nicknames(username) ⇒ Object Also known as: retrieveNicknames

Returns a NicknameEntry array from a username ex : lists jsmith’s nicknames

myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  mynicks = myapps.retrieve('jsmith')
mynicks.each {|nick| puts nick.nickname }


281
282
283
284
285
# File 'lib/gappsprovisioning/provisioningapi.rb', line 281

def retrieve_nicknames(username)
  xml_response = request(:nickname_retrieve_all_for_user, username, @headers)
  nicknames_feed = Feed.new(xml_response.elements["feed"],  NicknameEntry)
  nicknames_feed = add_next_feeds(nicknames_feed, xml_response, NicknameEntry)
end

#retrieve_page_of_email_lists(start_listname) ⇒ Object Also known as: retrievePageOfEmailLists

Returns an EmailListEntry array populated with 100 email lists, starting from an email list name. Starting email list name must be written “mylist”, not “[email protected]”. Omit “@mydomain.com”.

ex :  
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
list= myapps.retrieve_page_of_email_lists("mylist") 
  list.each{ |entry| puts entry.email_list}


465
466
467
468
469
# File 'lib/gappsprovisioning/provisioningapi.rb', line 465

def retrieve_page_of_email_lists(start_listname)
  param='?startEmailListName='+start_listname
  xml_response = request(:email_list_retrieve_in_domain, param, @headers)
  email_list_feed = Feed.new(xml_response.elements["feed"],  EmailListEntry)
end

#retrieve_page_of_nicknames(start_nickname) ⇒ Object Also known as: retrievePageOfNicknames

Returns a NicknameEntry array populated with 100 nicknames, starting from a nickname

ex :  
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
list= myapps.retrieve_page_of_nicknames("joe")
  list.each{ |nick| puts nick.login}


320
321
322
323
324
# File 'lib/gappsprovisioning/provisioningapi.rb', line 320

def retrieve_page_of_nicknames(start_nickname)
  param='?startNickname='+start_nickname
  xml_response = request(:nickname_retrieve_all_in_domain, param, @headers)
  nicknames_feed = Feed.new(xml_response.elements["feed"],  NicknameEntry)
end

#retrieve_page_of_recipients(email_list, start_recipient) ⇒ Object Also known as: retrievePageOfRecipients

Returns an EmailListRecipientEntry Array populated with 100 recipients from an email list, starting from a recipient name. Omit “@mydomain.com” in the email list name.

ex :  
myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
list= myapps.retrieve_page_of_recipients('mylist', 'jsmith') 
  list.each{ |recipient| puts recipient.email}


507
508
509
510
511
# File 'lib/gappsprovisioning/provisioningapi.rb', line 507

def retrieve_page_of_recipients(email_list, start_recipient)
  param = email_list+'/recipient/?startRecipient='+start_recipient
  xml_response = request(:subscription_retrieve, param, @headers)
  recipients_feed = Feed.new(xml_response.elements["feed"], EmailListRecipientEntry)
end

#retrieve_page_of_users(start_username) ⇒ Object Also known as: retrievePageOfUsers

Returns a UserEntry array populated with 100 users, starting from a username

ex :  
  myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  list= myapps.retrieve_page_of_users("jsmtih")
  list.each{ |user| puts user.username}


182
183
184
185
186
# File 'lib/gappsprovisioning/provisioningapi.rb', line 182

def retrieve_page_of_users(start_username)
  param='?startUsername='+start_username
  response = request(:user_retrieve_all,param,@headers)
  user_feed = Feed.new(response.elements["feed"],  UserEntry)
end

#retrieve_user(username) ⇒ Object Also known as: retrieveUser

Returns a UserEntry instance from a username

ex :  
  myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  user = myapps.retrieve_user('jsmith')
  puts "givenName : "+user.given_name
  puts "familyName : "+user.family_name


160
161
162
163
# File 'lib/gappsprovisioning/provisioningapi.rb', line 160

def retrieve_user(username)
  xml_response = request(:user_retrieve, username, @headers) 
  user_entry = UserEntry.new(xml_response.elements["entry"])
end

#suspend_user(username) ⇒ Object Also known as: suspendUser

Suspends an account in your domain, returns a UserEntry instance

ex :
  myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  user = myapps.suspend('jsmith')
  puts user.suspended   => "true"


236
237
238
239
240
241
242
# File 'lib/gappsprovisioning/provisioningapi.rb', line 236

def suspend_user(username)
  msg = RequestMessage.new
  msg.(username,nil,nil,nil,"true")
  msg.add_path('https://'+@@google_host+@action[:user_update][:path]+username)
  response  = request(:user_update,username,@headers, msg.to_s)
  user_entry = UserEntry.new(response.elements["entry"])
end

#update_group(group_id, group_name, description, email_permission) ⇒ Object Also known as: updateGroup



350
351
352
353
354
355
# File 'lib/gappsprovisioning/provisioningapi.rb', line 350

def update_group(group_id, group_name, description, email_permission)
  msg = RequestMessage.new(false)
  msg.about_group(group_id, group_name, description, email_permission)
  xml_response = request(:group_update, group_id, @headers, msg.to_s)
  group_entry = GroupEntry.new(xml_response.elements["entry"])
end

#update_user(username, given_name, family_name, password = nil, passwd_hash_function = nil, admin = nil, suspended = nil, changepasswd = nil, quota = nil) ⇒ Object Also known as: updateUser

Updates an account in your domain, returns a UserEntry instance

params :
  username is required and can't be updated.
  given_name and family_name are required, may be updated.
  if set to nil, every other parameter won't update the attribute.
    passwd_hash_function :  string "SHA-1" or nil (default)
    admin :  string "true" or string "false" or nil (no boolean : true or false). 
    suspended :  string "true" or string "false" or nil (no boolean : true or false)
    change_passwd :  string "true" or string "false" or nil (no boolean : true or false)
    quota : limit en MB, ex :  string "2048"
ex :
  myapps = ProvisioningApi.new('[email protected]','PaSsWoRd')
  user = myapps.update('jsmith', 'John', 'Smith', nil, nil, "true", nil, "true", nil)
  puts user.admin   => "true"


221
222
223
224
225
226
227
228
229
# File 'lib/gappsprovisioning/provisioningapi.rb', line 221

def update_user(username, given_name, family_name, password=nil, passwd_hash_function=nil, admin=nil, suspended=nil, changepasswd=nil, quota=nil)
  msg = RequestMessage.new
  msg.(username,password,passwd_hash_function,admin,suspended,changepasswd)
  msg.about_name(family_name, given_name)
  msg.about_quota(quota) if quota
  msg.add_path('https://'+@@google_host+@action[:user_update][:path]+username)
  response  = request(:user_update,username,@headers, msg.to_s)
  user_entry = UserEntry.new(response.elements["entry"])
end