Sets the request body to the provided value and returns the request itself.

        Keyword arguments:
        body -- A UTF-8 string or bytes-like object which represents the request body.

def with_body(self, body):
        # @todo take encoding into account
        """Sets the request body to the provided value and returns the request itself.

        Keyword arguments:
        body -- A UTF-8 string or bytes-like object which represents the request body.
        """
        try:
            self.body = body.encode('utf-8')
        except:
            try:
                self.body = bytes(body)
            except:
                raise ValueError("Request body must be a string or bytes-like object.")
        hasher = hashlib.sha256()
        hasher.update(self.body)
        digest = base64.b64encode(hasher.digest()).decode('utf-8')
        self.with_header("X-Authorization-Content-Sha256", digest)
        return self