mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-28 01:41:36 +00:00
247 lines
9.9 KiB
Python
247 lines
9.9 KiB
Python
#!/usr/bin/python
|
|
#
|
|
# Copyright 2009 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.
|
|
|
|
"""SitesService extends the GDataService for Google Sites API calls."""
|
|
|
|
import gdata.apps
|
|
import gdata.apps.service
|
|
import gdata.service
|
|
|
|
|
|
# Feed URI templates
|
|
CONTENT_FEED_TEMPLATE = '/feeds/content/%s/%s/'
|
|
REVISION_FEED_TEMPLATE = '/feeds/revision/%s/%s/'
|
|
ACTIVITY_FEED_TEMPLATE = '/feeds/activity/%s/%s/'
|
|
ACTIVITY_ENTRY_TEMPLATE = '/feeds/activity/%s/%s/%s'
|
|
SITE_FEED_TEMPLATE = '/feeds/site/%s/'
|
|
ACL_FEED_TEMPLATE = '/feeds/acl/site/%s/%s'
|
|
ACL_ENTRY_TEMPLATE = '/feeds/acl/site/%s/%s/%s'
|
|
|
|
|
|
class SitesService(gdata.service.GDataService):
|
|
"""Client extension for the Google Sites API service."""
|
|
|
|
def __init__(self,
|
|
source=None, server='sites.google.com', additional_headers=None,
|
|
**kwargs):
|
|
"""Constructs a new client for the Sites API.
|
|
|
|
Args:
|
|
site: string (optional) Name (webspace) of the Google Site
|
|
domain: string (optional) Domain of the (Google Apps hosted) Site.
|
|
If no domain is given, the Site is assumed to be a consumer Google
|
|
Site, in which case the value 'site' is used.
|
|
source: string (optional) The name of the user's application.
|
|
server: string (optional) The name of the server to which a connection
|
|
will be opened. Default value: 'sites..google.com'.
|
|
**kwargs: The other parameters to pass to gdata.service.GDataService
|
|
constructor.
|
|
"""
|
|
if additional_headers == None:
|
|
additional_headers = {}
|
|
additional_headers['GData-Version'] = '1.4'
|
|
gdata.service.GDataService.__init__(self,
|
|
source=source, server=server, additional_headers=additional_headers,
|
|
**kwargs)
|
|
self.ssl = True
|
|
self.port = 443
|
|
|
|
def make_site_feed_uri(self, domain=None, site=None):
|
|
if not domain:
|
|
domain = 'site'
|
|
if not site:
|
|
return SITE_FEED_TEMPLATE % domain
|
|
return (SITE_FEED_TEMPLATE % domain) + site
|
|
|
|
MakeSiteFeedUri = make_site_feed_uri
|
|
|
|
def get_site_feed(self, uri=None, domain=None, site=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_site_feed_uri(domain=domain, site=site)
|
|
try:
|
|
return self.Get(uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.SiteFeedFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
GetSiteFeed = get_site_feed
|
|
|
|
def create_site(self, siteentry=None, uri=None, domain=None, site=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
if uri is None:
|
|
uri = self.make_site_feed_uri(domain=domain, site=site)
|
|
try:
|
|
return self.Post(siteentry, uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.SiteEntryFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
CreateSite = create_site
|
|
|
|
def get_site(self, uri=None, domain=None, site=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_site_feed_uri(domain=domain, site=site)
|
|
try:
|
|
return self.Get(uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.SiteEntryFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
GetSite = get_site
|
|
|
|
def update_site(self, siteentry=None, uri=None, domain=None, site=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_site_feed_uri(domain=domain, site=site)
|
|
try:
|
|
return self.Put(siteentry, uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.SiteEntryFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
UpdateSite = update_site
|
|
|
|
def make_acl_feed_uri(self, domain=None, site=None):
|
|
return ACL_FEED_TEMPLATE % (domain, site)
|
|
|
|
MakeAclFeedUri = make_acl_feed_uri
|
|
|
|
def get_acl_feed(self, uri=None, domain=None, site=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_acl_feed_uri(domain=domain, site=site)
|
|
try:
|
|
return self.Get(uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.AclFeedFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
GetAclFeed = get_acl_feed
|
|
|
|
def make_acl_entry_uri(self, domain=None, site=None, ruleId=None):
|
|
return ACL_ENTRY_TEMPLATE % (domain, site, ruleId)
|
|
|
|
MakeAclEntryUri = make_acl_entry_uri
|
|
|
|
def create_acl_entry(self, aclentry=None, uri=None, domain=None, site=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_acl_feed_uri(domain=domain, site=site)
|
|
try:
|
|
return self.Post(aclentry, uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.AclEntryFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
CreateAclEntry = create_acl_entry
|
|
|
|
def get_acl_entry(self, uri=None, domain=None, site=None, ruleId=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_acl_entry_uri(domain=domain, site=site, ruleId=ruleId)
|
|
try:
|
|
return self.Get(uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.AclEntryFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
GetAclEntry = get_acl_entry
|
|
|
|
def update_acl_entry(self, aclentry=None, uri=None, domain=None, site=None, ruleId=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_acl_entry_uri(domain=domain, site=site, ruleId=ruleId)
|
|
try:
|
|
return self.Put(aclentry, uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.AclEntryFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
UpdateAclEntry = update_acl_entry
|
|
|
|
def delete_acl_entry(self, uri=None, domain=None, site=None, ruleId=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_acl_entry_uri(domain=domain, site=site, ruleId=ruleId)
|
|
try:
|
|
return self.Delete(uri,
|
|
url_params=url_params, escape_params=escape_params, extra_headers=extra_headers)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
DeleteAclEntry = delete_acl_entry
|
|
|
|
def make_activity_feed_uri(self, domain=None, site=None):
|
|
return ACTIVITY_FEED_TEMPLATE % (domain, site)
|
|
|
|
MakeActivityFeedUri = make_activity_feed_uri
|
|
|
|
def get_activity_feed(self, uri=None, domain=None, site=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_activity_feed_uri(domain=domain, site=site)
|
|
try:
|
|
return self.Get(uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.ActivityFeedFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
GetActivityFeed = get_activity_feed
|
|
|
|
def make_activity_entry_uri(self, domain=None, site=None, activityId=None):
|
|
return ACTIVITY_ENTRY_TEMPLATE % (domain, site, activityId)
|
|
|
|
MakeActivityEntryUri = make_activity_entry_uri
|
|
|
|
def get_activity_entry(self, uri=None, domain=None, site=None, activityId=None,
|
|
extra_headers=None, url_params=None, escape_params=True):
|
|
|
|
uri = uri or self.make_activity_entry_uri(domain=domain, site=site, activityId=activityId)
|
|
try:
|
|
return self.Get(uri,
|
|
url_params=url_params, extra_headers=extra_headers, escape_params=escape_params,
|
|
converter=gdata.apps.sites.ActivityEntryFromString)
|
|
except gdata.service.RequestError as e:
|
|
raise gdata.apps.service.AppsForYourDomainException(e.args[0])
|
|
|
|
GetActivityEntry = get_activity_entry
|
|
|
|
class SitesQuery(gdata.service.Query):
|
|
|
|
def make_site_feed_uri(self, domain=None, site=None):
|
|
if not domain:
|
|
domain = 'site'
|
|
if not site:
|
|
return SITE_FEED_TEMPLATE % domain
|
|
return (SITE_FEED_TEMPLATE % domain) + site
|
|
|
|
def __init__(self, feed=None, domain=None, site=None, params=None):
|
|
self.feed = feed or self.make_site_feed_uri(domain=domain, site=site)
|
|
gdata.service.Query.__init__(self, feed=self.feed, params=params)
|
|
|