diff --git a/static/js/services/datafile-service.js b/static/js/services/datafile-service.js index 3b8368076..73878ab0d 100644 --- a/static/js/services/datafile-service.js +++ b/static/js/services/datafile-service.js @@ -1,181 +1,181 @@ -/** - * Service which provides helper methods for downloading a data file from a URL, and extracting - * its contents as .tar, .tar.gz, or .zip file. Note that this service depends on external - * library code in the lib/ directory: - * - jszip.min.js - * - Blob.js - * - zlib.js - */ -angular.module('quay').factory('DataFileService', [function() { - var dataFileService = {}; - - dataFileService.getName_ = function(filePath) { - var parts = filePath.split('/'); - return parts[parts.length - 1]; - }; - - dataFileService.tryAsZip_ = function(buf, success, failure) { - var zip = null; - var zipFiles = null; - try { - var zip = new JSZip(buf); - zipFiles = zip.files; - } catch (e) { - failure(); - return; - } - - var files = []; - for (var filePath in zipFiles) { - if (zipFiles.hasOwnProperty(filePath)) { - files.push({ - 'name': dataFileService.getName_(filePath), - 'path': filePath, - 'canRead': true, - 'toBlob': (function(fp) { - return function() { - return new Blob([zip.file(fp).asArrayBuffer()]); - }; - }(filePath)) - }); - } - } - - success(files); - }; - - dataFileService.tryAsTarGz_ = function(buf, success, failure) { - var gunzip = new Zlib.Gunzip(new Uint8Array(buf)); - var plain = null; - - try { - plain = gunzip.decompress(); - } catch (e) { - failure(); - return; - } - - if (plain.byteLength == 0) { - plain = buf; - } - - dataFileService.tryAsTar_(plain, success, failure); - }; - - dataFileService.tryAsTar_ = function(buf, success, failure) { - var collapsePath = function(originalPath) { - // Tar files can contain entries of the form './', so we need to collapse - // those paths down. - var parts = originalPath.split('/'); - for (var i = parts.length - 1; i >= 0; i--) { - var part = parts[i]; - if (part == '.') { - parts.splice(i, 1); - } - } - return parts.join('/'); - }; - - try { - var handler = new Untar(new Uint8Array(buf)); - handler.process(function(status, read, files, err) { - switch (status) { - case 'error': - failure(err); - break; - - case 'done': - var processed = []; - for (var i = 0; i < files.length; ++i) { - var currentFile = files[i]; - var path = collapsePath(currentFile.meta.filename); - - if (path == '' || path == 'pax_global_header') { continue; } - - processed.push({ - 'name': dataFileService.getName_(path), - 'path': path, - 'canRead': true, - 'toBlob': (function(currentFile) { - return function() { - return new Blob([currentFile.buffer], {type: 'application/octet-binary'}); - }; - }(currentFile)) - }); - } - success(processed); - break; - } - }); - } catch (e) { - failure(); - } - - }; - - dataFileService.blobToString = function(blob, callback) { - var reader = new FileReader(); - reader.onload = function(event){ - callback(reader.result); - }; - reader.readAsText(blob); - }; - - dataFileService.arrayToString = function(buf, callback) { - var bb = new Blob([buf], {type: 'application/octet-binary'}); - var f = new FileReader(); - f.onload = function(e) { - callback(e.target.result); - }; - f.onerror = function(e) { - callback(null); - }; - f.onabort = function(e) { - callback(null); - }; - f.readAsText(bb); - }; - - dataFileService.readDataArrayAsPossibleArchive = function(buf, success, failure) { - dataFileService.tryAsZip_(buf, success, function() { - dataFileService.tryAsTarGz_(buf, success, function() { - dataFileService.tryAsTar_(buf, success, failure); - }); - }); - }; - - dataFileService.downloadDataFileAsArrayBuffer = function($scope, url, progress, error, loaded) { - var request = new XMLHttpRequest(); - request.open('GET', url, true); - request.responseType = 'arraybuffer'; - - request.onprogress = function(e) { - $scope.$apply(function() { - var percentLoaded; - if (e.lengthComputable) { - progress(e.loaded / e.total); - } - }); - }; - - request.onerror = function() { - $scope.$apply(function() { - error(); - }); - }; - - request.onload = function() { - if (this.status == 200) { - $scope.$apply(function() { - var uint8array = new Uint8Array(request.response); - loaded(uint8array); - }); - return; - } - }; - - request.send(); - }; - - return dataFileService; -}]); +// /** +// * Service which provides helper methods for downloading a data file from a URL, and extracting +// * its contents as .tar, .tar.gz, or .zip file. Note that this service depends on external +// * library code in the lib/ directory: +// * - jszip.min.js +// * - Blob.js +// * - zlib.js +// */ +// angular.module('quay').factory('DataFileService', [function() { +// var dataFileService = {}; +// +// dataFileService.getName_ = function(filePath) { +// var parts = filePath.split('/'); +// return parts[parts.length - 1]; +// }; +// +// dataFileService.tryAsZip_ = function(buf, success, failure) { +// var zip = null; +// var zipFiles = null; +// try { +// var zip = new JSZip(buf); +// zipFiles = zip.files; +// } catch (e) { +// failure(); +// return; +// } +// +// var files = []; +// for (var filePath in zipFiles) { +// if (zipFiles.hasOwnProperty(filePath)) { +// files.push({ +// 'name': dataFileService.getName_(filePath), +// 'path': filePath, +// 'canRead': true, +// 'toBlob': (function(fp) { +// return function() { +// return new Blob([zip.file(fp).asArrayBuffer()]); +// }; +// }(filePath)) +// }); +// } +// } +// +// success(files); +// }; +// +// dataFileService.tryAsTarGz_ = function(buf, success, failure) { +// var gunzip = new Zlib.Gunzip(new Uint8Array(buf)); +// var plain = null; +// +// try { +// plain = gunzip.decompress(); +// } catch (e) { +// failure(); +// return; +// } +// +// if (plain.byteLength == 0) { +// plain = buf; +// } +// +// dataFileService.tryAsTar_(plain, success, failure); +// }; +// +// dataFileService.tryAsTar_ = function(buf, success, failure) { +// var collapsePath = function(originalPath) { +// // Tar files can contain entries of the form './', so we need to collapse +// // those paths down. +// var parts = originalPath.split('/'); +// for (var i = parts.length - 1; i >= 0; i--) { +// var part = parts[i]; +// if (part == '.') { +// parts.splice(i, 1); +// } +// } +// return parts.join('/'); +// }; +// +// try { +// var handler = new Untar(new Uint8Array(buf)); +// handler.process(function(status, read, files, err) { +// switch (status) { +// case 'error': +// failure(err); +// break; +// +// case 'done': +// var processed = []; +// for (var i = 0; i < files.length; ++i) { +// var currentFile = files[i]; +// var path = collapsePath(currentFile.meta.filename); +// +// if (path == '' || path == 'pax_global_header') { continue; } +// +// processed.push({ +// 'name': dataFileService.getName_(path), +// 'path': path, +// 'canRead': true, +// 'toBlob': (function(currentFile) { +// return function() { +// return new Blob([currentFile.buffer], {type: 'application/octet-binary'}); +// }; +// }(currentFile)) +// }); +// } +// success(processed); +// break; +// } +// }); +// } catch (e) { +// failure(); +// } +// +// }; +// +// dataFileService.blobToString = function(blob, callback) { +// var reader = new FileReader(); +// reader.onload = function(event){ +// callback(reader.result); +// }; +// reader.readAsText(blob); +// }; +// +// dataFileService.arrayToString = function(buf, callback) { +// var bb = new Blob([buf], {type: 'application/octet-binary'}); +// var f = new FileReader(); +// f.onload = function(e) { +// callback(e.target.result); +// }; +// f.onerror = function(e) { +// callback(null); +// }; +// f.onabort = function(e) { +// callback(null); +// }; +// f.readAsText(bb); +// }; +// +// dataFileService.readDataArrayAsPossibleArchive = function(buf, success, failure) { +// dataFileService.tryAsZip_(buf, success, function() { +// dataFileService.tryAsTarGz_(buf, success, function() { +// dataFileService.tryAsTar_(buf, success, failure); +// }); +// }); +// }; +// +// dataFileService.downloadDataFileAsArrayBuffer = function($scope, url, progress, error, loaded) { +// var request = new XMLHttpRequest(); +// request.open('GET', url, true); +// request.responseType = 'arraybuffer'; +// +// request.onprogress = function(e) { +// $scope.$apply(function() { +// var percentLoaded; +// if (e.lengthComputable) { +// progress(e.loaded / e.total); +// } +// }); +// }; +// +// request.onerror = function() { +// $scope.$apply(function() { +// error(); +// }); +// }; +// +// request.onload = function() { +// if (this.status == 200) { +// $scope.$apply(function() { +// var uint8array = new Uint8Array(request.response); +// loaded(uint8array); +// }); +// return; +// } +// }; +// +// request.send(); +// }; +// +// return dataFileService; +// }]); diff --git a/static/js/services/datafile/datafile.service.impl.spec.ts b/static/js/services/datafile/datafile.service.impl.spec.ts index 33e3a1f29..62539a794 100644 --- a/static/js/services/datafile/datafile.service.impl.spec.ts +++ b/static/js/services/datafile/datafile.service.impl.spec.ts @@ -115,10 +115,10 @@ describe("DataFileServiceImpl", () => { }); describe("readDataArrayAsPossibleArchive", () => { - + // TODO }); describe("downloadDataFileAsArrayBuffer", () => { - + // TODO }); -}); \ No newline at end of file +}); diff --git a/static/js/services/datafile/datafile.service.impl.ts b/static/js/services/datafile/datafile.service.impl.ts index be5ce180f..20b04ccc5 100644 --- a/static/js/services/datafile/datafile.service.impl.ts +++ b/static/js/services/datafile/datafile.service.impl.ts @@ -9,7 +9,7 @@ declare const Untar: (uint8Array: Uint8Array) => void; export class DataFileServiceImpl implements DataFileService { constructor(private fileReaderFactory: () => FileReader) { - + } public blobToString(blob: Blob, callback: (result: string) => void): void {