def get_bucket(self, bucket, marker=None, max_keys=None, prefix=None):
        """
        Get a list of all the objects in a bucket.

        @param bucket: The name of the bucket from which to retrieve objects.
        @type bucket: L{unicode}

        @param marker: If given, indicate a position in the overall
            results where the results of this call should begin.  The
            first result is the first object that sorts greater than
            this marker.
        @type marker: L{bytes} or L{NoneType}

        @param max_keys: If given, the maximum number of objects to
            return.
        @type max_keys: L{int} or L{NoneType}

        @param prefix: If given, indicate that only objects with keys
            beginning with this value should be returned.
        @type prefix: L{bytes} or L{NoneType}

        @return: A L{Deferred} that fires with a L{BucketListing}
            describing the result.

        @see: U{http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html}
        """
        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