def download_file_content(self, file_id, etag=None):
if not is_valid_uuid(file_id):<EOL><INDENT>raise StorageArgumentException(<EOL>'<STR_LIT>'.format(file_id))<EOL><DEDENT>headers = {'<STR_LIT>': '<STR_LIT>'}<EOL>if etag:<EOL><INDENT>headers['<STR_LIT>'] = etag<EOL><DEDENT>resp = self._authenticated_request.to_endpoint('<STR_LIT>'.format(file_id)).with_headers(headers).get()<EOL>if resp.status_code == <NUM_LIT>:<EOL><INDENT>return (None, None)<EOL><DEDENT>if '<STR_LIT>' not in resp.headers:<EOL><INDENT>raise StorageException('<STR_LIT>')<EOL><DEDENT>return (resp.headers['<STR_LIT>'], resp.content)<EOL>
Download file content.

        Args:
            file_id (str): The UUID of the file whose content is requested
            etag (str): If the content is not changed since the provided ETag,
                the content won't be downloaded. If the content is changed, it
                will be downloaded and returned with its new ETag.

        Note:
            ETags should be enclosed in double quotes::

                my_etag = '"71e1ed9ee52e565a56aec66bc648a32c"'


        Returns:
            A tuple of ETag and content (etag, content) if the content was
            retrieved. If an etag was provided, and content didn't change
            returns (None, None)::

                ('"71e1ed9ee52e565a56aec66bc648a32c"', 'Hello world!')

        Raises:
            StorageArgumentException: Invalid arguments
            StorageForbiddenException: Server response code 403
            StorageNotFoundException: Server response code 404
            StorageException: other 400-600 error codes