Sets the content data.

        arg:    data (osid.transport.DataInputStream): the content data
        raise:  InvalidArgument - ``data`` is invalid
        raise:  NoAccess - ``Metadata.isReadOnly()`` is ``true``
        raise:  NullArgument - ``data`` is ``null``
        *compliance: mandatory -- This method must be implemented.*

def set_data(self, data=None):
        """Sets the content data.

        arg:    data (osid.transport.DataInputStream): the content data
        raise:  InvalidArgument - ``data`` is invalid
        raise:  NoAccess - ``Metadata.isReadOnly()`` is ``true``
        raise:  NullArgument - ``data`` is ``null``
        *compliance: mandatory -- This method must be implemented.*

        """
        # cjshaw, Jan 7, 2015
        # Testing this with AWS -- set data + set_url (to save the S3 URL)
        # Uses:
        #    1) AWS repository-put user key pair
        #    2) S3 bucket for odl-repository
        #
        # For now, follow a convention of all items need to be in a catalog_id
        # folder...like:
        #    self._repository_id.identifier/<file>
        #
        # following: http://stackoverflow.com/questions/15085864/
        # how-to-upload-a-file-to-directory-in-s3-bucket-using-boto
        odl_repo, url = get_aws_s3_handle(self._config_map)
        repository_id = self._repository_id.get_identifier()
        try:
            filename = data.name.split('/')[-1]
            filename = re.sub(r'[^\w.]', '_', filename)  # clean out the spaces
        except AttributeError:
            filename = ObjectId()
        remote_location = str(repository_id) + '/' + str(filename)
        url += '/' + remote_location

        data.seek(0)

        odl_repo.put_object(
            Body=data.read(),
            Bucket=self._config_map['s3_bucket'],
            Key=remote_location
        )
        # odl_repo.key = remote_location
        # odl_repo.set_contents_from_file(data._my_data)

        # this should set the original S3 location, so we can retrieve the
        # original document if needed
        # do NOT set to the Cloudfront location...that should be locked down for
        # expiring URLs
        # constructed by the Cloudfront keypair only.
        self._payload.set_url(url)