def get_bucket(self, bucket, marker=None, max_keys=None, prefix=None):
        args = []
        if marker is not None:
            args.append(("marker", marker))
        if max_keys is not None:
            args.append(("max-keys", "%d" % (max_keys,)))
        if prefix is not None:
            args.append(("prefix", prefix))
        if args:
            object_name = "?" + urlencode(args)
        else:
            object_name = None
        details = self._details(
            method=b"GET",
            url_context=self._url_context(bucket=bucket, object_name=object_name),
        )
        d = self._submit(self._query_factory(details))
        d.addCallback(self._parse_get_bucket)
        return d