diff --git a/python/webgme_bindings/webgme_bindings/pluginbase.py b/python/webgme_bindings/webgme_bindings/pluginbase.py index 5212c79..6d6e263 100644 --- a/python/webgme_bindings/webgme_bindings/pluginbase.py +++ b/python/webgme_bindings/webgme_bindings/pluginbase.py @@ -154,6 +154,18 @@ def create_message(self, node, message, severity='info'): """ return self._send({'name': 'createMessage', 'args': [node, message, severity]}) + def get_file_metadata(self, metadata_hash): + """ + Retrieves the metadata of the file from blob storage. + + :param metadata_hash: the "id" of the file to retrieve. + :type metadata_hash: str + :returns: The metadata of the file. + :rtype: dict + :raises JSError: The result of the execution. + """ + return self._send({'name': 'getFileMetadata', 'args': [metadata_hash]}) + def get_artifact(self, metadata_hash): """ Retrieves all the files in the artifact from the blob storage. diff --git a/src/corezmq.js b/src/corezmq.js index 3acb1a4..4e09b44 100644 --- a/src/corezmq.js +++ b/src/corezmq.js @@ -753,6 +753,12 @@ function CoreZMQ(project, core, mainLogger, opts) { .then((node) => { plugin[req.name](node, req.args[1], req.args[2]); }); + case 'getFileMetadata': + try { + return plugin.blobClient.getMetadata(req.args[0]); + } catch (e) { + return Q.reject(e); + } case 'getFile': case 'getArtifact': try { diff --git a/src/plugins/PythonFileIO/PythonFileIO/__init__.py b/src/plugins/PythonFileIO/PythonFileIO/__init__.py index 0361990..f4bd0da 100644 --- a/src/plugins/PythonFileIO/PythonFileIO/__init__.py +++ b/src/plugins/PythonFileIO/PythonFileIO/__init__.py @@ -35,11 +35,16 @@ def main(self): self.result_set_success(False) self.result_set_error('simple binary content mismatch') + file_metadata = self.get_file_metadata(bin_hash) + logger.info(file_metadata) + if file_metadata['name'] != 'heart.png': + self.logger.error('issue in file metadata') + self.result_set_success(False) + self.result_set_error('file metadata mismatch') + arti_hash = self.add_artifact('myArti', {'text.txt':'just because', 'heart.png':binary_content}) retrieved_content_from_arti = self.get_bin_file(arti_hash,'heart.png') if binary_content != retrieved_content_from_arti: self.logger.error('issue in complex blob') self.result_set_success(False) self.result_set_error('embedded binary content mismatch') - -