onnxruntime/js/scripts/utils.ts
Yulong Wang 0c78b71352
prepare test folder from GitHub (#12220)
* consume onnx test data from github

* ensure tests

* update script and allow opset specification

* fix python format

* fix python format

* consume new filter format

* fix linting error
2022-07-20 22:01:08 -07:00

47 lines
1.4 KiB
TypeScript

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import {WriteStream} from 'fs';
import * as https from 'https';
import {JSZipObject} from 'jszip';
export const downloadZip = async(url: string): Promise<Buffer> => new Promise<Buffer>((resolve, reject) => {
https.get(url, res => {
const {statusCode} = res;
const contentType = res.headers['content-type'];
if (statusCode === 301 || statusCode === 302) {
downloadZip(res.headers.location!).then(buffer => resolve(buffer), reason => reject(reason));
return;
} else if (statusCode !== 200) {
throw new Error(`Failed to download build list. HTTP status code = ${statusCode}`);
}
if (!contentType || !/^application\/zip/.test(contentType)) {
throw new Error(`unexpected content type: ${contentType}`);
}
const chunks: Buffer[] = [];
res.on('data', (chunk) => {
chunks.push(chunk);
});
res.on('end', () => {
resolve(Buffer.concat(chunks));
});
res.on('error', err => {
reject(`${err}`);
});
});
});
export const extractFile = async(entry: JSZipObject, ostream: WriteStream): Promise<void> =>
new Promise<void>((resolve, reject) => {
entry.nodeStream()
.pipe(ostream)
.on('finish',
() => {
resolve();
})
.on('error', (err) => {
reject(err);
});
});