public async getItem()

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);
            }
        });
    }