in api/FileContainerApi.ts [38:118]
public async getItem(
containerId: number,
scope?: string,
itemPath?: string,
downloadFileName?: string
): Promise<restm.IRestResponse<NodeJS.ReadableStream>> {
return new Promise<restm.IRestResponse<NodeJS.ReadableStream>>(async (resolve, reject) => {
let routeValues: any = {
containerId: containerId
};
let queryValues: any = {
scope: scope,
itemPath: itemPath,
'$format': "OctetStream",
downloadFileName: downloadFileName
};
try {
let verData: vsom.ClientVersioningData = await this.vsoClient.getVersioningData(
"4.0-preview.4",
"Container",
"e4f5c81e-e250-447b-9fef-bd48471bea5e",
routeValues,
queryValues);
let url: string = verData.requestUrl;
let options: restm.IRequestOptions = this.createRequestOptions('application/octet-stream', verData.apiVersion);
let res = await this.http.get(url);
let rres: restm.IRestResponse<NodeJS.ReadableStream> = <restm.IRestResponse<NodeJS.ReadableStream>>{};
let statusCode = res.message.statusCode;
rres.statusCode = statusCode;
// not found leads to null obj returned
if (statusCode == httpm.HttpCodes.NotFound) {
resolve(rres);
}
if (statusCode > 299) {
let msg;
// if exception/error in body, attempt to get better error
let contents = await res.readBody();
let obj;
if (contents && contents.length > 0) {
obj = JSON.parse(contents);
if (options && options.responseProcessor) {
rres.result = options.responseProcessor(obj);
}
else {
rres.result = obj;
}
}
if (obj && obj.message) {
msg = obj.message;
}
else {
msg = "Failed request: (" + statusCode + ") " + res.message.url;
}
reject(new Error(msg));
}
else {
// if the response is gzipped, unzip it
if (res.message.headers["content-encoding"] === "gzip") {
let unzipStream = zlib.createGunzip();
res.message.pipe(unzipStream);
rres.result = unzipStream;
}
else {
rres.result = res.message;
}
resolve(rres);
}
}
catch (err) {
reject(err);
}
});
}