summaryrefslogtreecommitdiff
path: root/src/mailman/rest/domains.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/rest/domains.py')
-rw-r--r--src/mailman/rest/domains.py33
1 files changed, 11 insertions, 22 deletions
diff --git a/src/mailman/rest/domains.py b/src/mailman/rest/domains.py
index 32f010534..8b7cd2699 100644
--- a/src/mailman/rest/domains.py
+++ b/src/mailman/rest/domains.py
@@ -31,15 +31,15 @@ from zope.component import getUtility
from mailman.interfaces.domain import (
BadDomainSpecificationError, IDomainManager)
-from mailman.rest.helpers import etag, path_to
+from mailman.rest.helpers import CollectionMixin, etag, path_to
-class _DomainBase(resource.Resource):
+class _DomainBase(resource.Resource, CollectionMixin):
"""Shared base class for domain representations."""
- def _domain_data(self, domain):
- """Return the domain data for a single domain."""
+ def _resource_as_dict(self, domain):
+ """See `CollectionMixin`."""
return dict(
base_url=domain.base_url,
contact_address=domain.contact_address,
@@ -49,9 +49,9 @@ class _DomainBase(resource.Resource):
url_host=domain.url_host,
)
- def _format_domain(self, domain):
- """Format the data for a single domain."""
- return etag(self._domain_data(domain))
+ def _get_collection(self, request):
+ """See `CollectionMixin`."""
+ return list(getUtility(IDomainManager))
class ADomain(_DomainBase):
@@ -66,7 +66,7 @@ class ADomain(_DomainBase):
domain = getUtility(IDomainManager).get(self._domain)
if domain is None:
return http.not_found()
- return http.ok([], self._format_domain(domain))
+ return http.ok([], self._resource_as_json(domain))
class AllDomains(_DomainBase):
@@ -90,18 +90,7 @@ class AllDomains(_DomainBase):
return http.created(location, [], None)
@resource.GET()
- def container(self, request):
- """Return the /domains end-point."""
- domains = list(getUtility(IDomainManager))
- if len(domains) == 0:
- resource = dict(start=None, total_size=0)
- return http.ok([], etag(resource))
- entries = [self._domain_data(domain) for domain in domains]
- # Tag the domain entries, but use the dictionaries.
- [etag(data) for data in entries]
- resource = dict(
- start=0,
- total_size=len(domains),
- entries=entries,
- )
+ def collection(self, request):
+ """/domains"""
+ resource = self._make_collection(request)
return http.ok([], etag(resource))