Index: samples/groupssettings/client_secrets.json
===================================================================
new file mode 100644
diff --git a/samples/groupssettings/groupsettings.py b/samples/groupssettings/groupsettings.py
new file mode 100644
index 0000000..0e91bac
--- /dev/null
+++ b/samples/groupssettings/groupsettings.py
@@ -0,0 +1,169 @@
+#!/usr/bin/python
+#
+# Copyright 2011 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Sample for the Group Settings API demonstrates get and update method.
+
+Usage:
+ $ python groupsettings.py
+
+You can also get help on all the command-line flags the program understands
+by running:
+
+ $ python groupsettings.py --help
+"""
+
+__author__ = 'Shraddha Gupta <shraddhag@google.com>'
+
+from optparse import OptionParser
+import os
+
+import pprint
+import sys
+from apiclient.discovery import build
+import httplib2
+from oauth2client.client import flow_from_clientsecrets
+from oauth2client.file import Storage
+from oauth2client.tools import run
+
+
+# CLIENT_SECRETS, name of a file containing the OAuth 2.0 information for this
+# application, including client_id and client_secret, which are found
+# on the API Access tab on the Google APIs
+# Console <http://code.google.com/apis/console>
+CLIENT_SECRETS = 'client_secrets.json'
+
+# Helpful message to display in the browser if the CLIENT_SECRETS file
+# is missing.
+MISSING_CLIENT_SECRETS_MESSAGE = """
+WARNING: Please configure OAuth 2.0
+
+To make this sample run you will need to populate the client_secrets.json file
+found at:
+
+ %s
+
+with information from the APIs Console <https://code.google.com/apis/console>.
+
+""" % os.path.join(os.path.dirname(__file__), CLIENT_SECRETS)
+
+
+def access_settings(service, groupId, settings):
+ """Retrieves a group's settings and updates the access permissions to it.
+
+ Args:
+ service: object service for the Group Settings API.
+ groupId: string identifier of the group@domain.
+ settings: dictionary key-value pairs of properties of group.
+ """
+
+ # Get the resource 'group' from the set of resources of the API.
+ # The Group Settings API has only one resource 'group'.
+ group = service.groups()
+
+ # Retrieve the group properties
+ g = group.get(groupUniqueId=groupId).execute()
+ print '\nGroup properties for group %s\n' % g['name']
+ pprint.pprint(g)
+
+ # If dictionary is empty, return without updating the properties.
+ if not settings.keys():
+ print '\nGive access parameters to update group access permissions\n'
+ return
+
+ body = {}
+
+ # Settings might contain null value for some keys(properties).
+ # Extract the properties with values and add to dictionary body.
+ for key in settings.iterkeys():
+ if settings[key] is not None:
+ body[key] = settings[key]
+
+ # Update the properties of group
+ g1 = group.update(groupUniqueId=groupId, body=body).execute()
+
+ print '\nUpdated Access Permissions to the group\n'
+ pprint.pprint(g1)
+
+
+def main(argv):
+ """Demos the setting of the access properties by the Groups Settings API."""
+ usage = 'usage: %prog [options]'
+ parser = OptionParser(usage=usage)
+ parser.add_option('--groupId',
+ help='Group email address')
+ parser.add_option('--whoCanInvite',
+ help='Possible values: ALL_MANAGERS_CAN_INVITE, '
+ 'ALL_MEMBERS_CAN_INVITE')
+ parser.add_option('--whoCanJoin',
+ help='Possible values: ALL_IN_DOMAIN_CAN_JOIN, '
+ 'ANYONE_CAN_JOIN, CAN_REQUEST_TO_JOIN, '
+ 'CAN_REQUEST_TO_JOIN')
+ parser.add_option('--whoCanPostMessage',
+ help='Possible values: ALL_IN_DOMAIN_CAN_POST, '
+ 'ALL_MANAGERS_CAN_POST, ALL_MEMBERS_CAN_POST, '
+ 'ANYONE_CAN_POST, NONE_CAN_POST')
+ parser.add_option('--whoCanViewGroup',
+ help='Possible values: ALL_IN_DOMAIN_CAN_VIEW, '
+ 'ALL_MANAGERS_CAN_VIEW, ALL_MEMBERS_CAN_VIEW, '
+ 'ANYONE_CAN_VIEW')
+ parser.add_option('--whoCanViewMembership',
+ help='Possible values: ALL_IN_DOMAIN_CAN_VIEW, '
+ 'ALL_MANAGERS_CAN_VIEW, ALL_MEMBERS_CAN_VIEW, '
+ 'ANYONE_CAN_VIEW')
+ (options, args) = parser.parse_args()
+
+ if options.groupId is None:
+ print 'Give the groupId for the group'
+ parser.print_help()
+ return
+
+ settings = {}
+
+ if (options.whoCanInvite or options.whoCanJoin or options.whoCanPostMessage
+ or options.whoCanPostMessage or options.whoCanViewMembership) is None:
+ print 'No access parameters given in input to update access permissions'
+ parser.print_help()
+ else:
+ settings = {'whoCanInvite': options.whoCanInvite,
+ 'whoCanJoin': options.whoCanJoin,
+ 'whoCanPostMessage': options.whoCanPostMessage,
+ 'whoCanViewGroup': options.whoCanViewGroup,
+ 'whoCanViewMembership': options.whoCanViewMembership}
+
+ # Set up a Flow object to be used if we need to authenticate.
+ FLOW = flow_from_clientsecrets(CLIENT_SECRETS,
+ scope='https://www.googleapis.com/auth/apps.groups.settings',
+ message=MISSING_CLIENT_SECRETS_MESSAGE)
+
+ storage = Storage('groupsettings.dat')
+ credentials = storage.get()
+
+ if credentials is None or credentials.invalid:
+ print 'invalid credentials'
+ # Save the credentials in storage to be used in subsequent runs.
+ credentials = run(FLOW, storage)
+
+ # Create an httplib2.Http object to handle our HTTP requests and authorize it
+ # with our good Credentials.
+ http = httplib2.Http()
+ http = credentials.authorize(http)
+
+ service = build('groupssettings', 'v1', http=http)
+
+ access_settings(service=service, groupId=options.groupId, settings=settings)
+
+if __name__ == '__main__':
+ main(sys.argv)