From 9b077c00befe957c06ddf565a6e266ccabcaefd7 Mon Sep 17 00:00:00 2001 From: Nikitha Chettiar Date: Fri, 14 Oct 2022 18:11:02 -0700 Subject: [PATCH 1/3] adding upload session url option in create onedrive --- package.json | 2 +- src/tasks/OneDriveLargeFileUploadTask.ts | 7 ++++++- test/development/workload/largeFileUpload.ts | 13 +++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9d448980f..4d45dadb1 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "test": "npm run test:cjs && npm run test:esm", "test:cjs": "npm run build:sub_cjs && mocha 'lib/test/common/**/*.js' --require isomorphic-fetch && mocha 'lib/test/node/**/*.js' --require isomorphic-fetch", "test:coverage": "TS_NODE_PROJECT='./tsconfig-cjs.json' nyc mocha --require isomorphic-fetch -r ts-node/register test/common/**/*.ts && mocha --require isomorphic-fetch -r ts-node/register test/common/**/*.ts", - "test:development": "tsc --p test/tsconfig-test-development.json && mocha 'lib/test/development/**/*.js' --require isomorphic-fetch", + "test:development": "tsc --p test/tsconfig-test-development.json && mocha 'lib/test/development/**/*.js' --require isomorphic-fetch --grep LargeFileUpload", "test:esm": "npm run build:sub_es && mocha 'lib/es/test/common/**/*.js' --require esm --require isomorphic-fetch && mocha 'lib/es/test/node/**/*.js' --require esm --require isomorphic-fetch" }, "nyc": { diff --git a/src/tasks/OneDriveLargeFileUploadTask.ts b/src/tasks/OneDriveLargeFileUploadTask.ts index 04d8072ae..b2c3bd84b 100644 --- a/src/tasks/OneDriveLargeFileUploadTask.ts +++ b/src/tasks/OneDriveLargeFileUploadTask.ts @@ -33,6 +33,11 @@ export interface OneDriveLargeFileUploadOptions { rangeSize?: number; conflictBehavior?: string; uploadEventHandlers?: UploadEventHandlers; + /// + /// Default upload session url is : "/me/drive/root:/{file-path}:/createUploadSession" + /// Set this property to override the default upload session url. Example: "/me/drive/special/{name}" + /// + uploadSessionURL?: string; } /** @@ -161,7 +166,7 @@ export class OneDriveLargeFileUploadTask extends LargeFileUploadTask { if (!client || !fileObject || !options) { throw new GraphClientError("Please provide the Graph client instance, FileObject interface implementation and OneDriveLargeFileUploadOptions value"); } - const requestUrl = OneDriveLargeFileUploadTask.constructCreateSessionUrl(options.fileName, options.path); + const requestUrl = options?.uploadSessionURL ? options.uploadSessionURL: OneDriveLargeFileUploadTask.constructCreateSessionUrl(options.fileName, options.path); const uploadSessionPayload: OneDriveFileUploadSessionPayLoad = { fileName: options.fileName, fileDescription: options.fileDescription, diff --git a/test/development/workload/largeFileUpload.ts b/test/development/workload/largeFileUpload.ts index 8487808bf..3c6dd1e55 100644 --- a/test/development/workload/largeFileUpload.ts +++ b/test/development/workload/largeFileUpload.ts @@ -58,4 +58,17 @@ describe("LargeFileUpload", () => { const response = await uploadTask.upload(); assert.isDefined(response.responseBody["id"]); }).timeout(30 * 1000); + + it("Test OneDrive File Upload to custom url", async () => { + const options: OneDriveLargeFileUploadOptions = { + path: "/Documents", + fileName, + rangeSize: 1024 * 1024, + uploadSessionURL: `https://graph.microsoft.com/v1.0/me/drive/special/createUploadSession` + }; + const file = fs.readFileSync(`./test/sample_files/${fileName}`); + const uploadTask = await OneDriveLargeFileUploadTask.create(client, file, options); + const response = await uploadTask.upload(); + assert.isDefined(response.responseBody["id"]); + }).timeout(30 * 1000); }); From 07fcc0391584d2894ada9f9bad6076d13ca33563 Mon Sep 17 00:00:00 2001 From: Nikitha Chettiar Date: Mon, 17 Oct 2022 11:18:00 -0700 Subject: [PATCH 2/3] test success special folder upload --- package.json | 2 +- test/development/workload/largeFileUpload.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 4d45dadb1..9d448980f 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "test": "npm run test:cjs && npm run test:esm", "test:cjs": "npm run build:sub_cjs && mocha 'lib/test/common/**/*.js' --require isomorphic-fetch && mocha 'lib/test/node/**/*.js' --require isomorphic-fetch", "test:coverage": "TS_NODE_PROJECT='./tsconfig-cjs.json' nyc mocha --require isomorphic-fetch -r ts-node/register test/common/**/*.ts && mocha --require isomorphic-fetch -r ts-node/register test/common/**/*.ts", - "test:development": "tsc --p test/tsconfig-test-development.json && mocha 'lib/test/development/**/*.js' --require isomorphic-fetch --grep LargeFileUpload", + "test:development": "tsc --p test/tsconfig-test-development.json && mocha 'lib/test/development/**/*.js' --require isomorphic-fetch", "test:esm": "npm run build:sub_es && mocha 'lib/es/test/common/**/*.js' --require esm --require isomorphic-fetch && mocha 'lib/es/test/node/**/*.js' --require esm --require isomorphic-fetch" }, "nyc": { diff --git a/test/development/workload/largeFileUpload.ts b/test/development/workload/largeFileUpload.ts index 3c6dd1e55..077305c44 100644 --- a/test/development/workload/largeFileUpload.ts +++ b/test/development/workload/largeFileUpload.ts @@ -59,12 +59,12 @@ describe("LargeFileUpload", () => { assert.isDefined(response.responseBody["id"]); }).timeout(30 * 1000); - it("Test OneDrive File Upload to custom url", async () => { + it("Test OneDrive File Upload to custom url", async () => { const options: OneDriveLargeFileUploadOptions = { path: "/Documents", fileName, rangeSize: 1024 * 1024, - uploadSessionURL: `https://graph.microsoft.com/v1.0/me/drive/special/createUploadSession` + uploadSessionURL: `https://graph.microsoft.com/v1.0/me/drive/special/approot:/sampleTest/${fileName}:/createUploadSession`, }; const file = fs.readFileSync(`./test/sample_files/${fileName}`); const uploadTask = await OneDriveLargeFileUploadTask.create(client, file, options); From 4ab639c5f6c338a5bdb6159681c581687db93fa7 Mon Sep 17 00:00:00 2001 From: Nikitha Chettiar Date: Wed, 19 Oct 2022 00:13:31 -0700 Subject: [PATCH 3/3] removing optional and updating doc --- docs/tasks/LargeFileUploadTask.md | 1 + src/tasks/OneDriveLargeFileUploadTask.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/tasks/LargeFileUploadTask.md b/docs/tasks/LargeFileUploadTask.md index 177875bbf..07fbcb1c2 100644 --- a/docs/tasks/LargeFileUploadTask.md +++ b/docs/tasks/LargeFileUploadTask.md @@ -137,6 +137,7 @@ const options: OneDriveLargeFileUploadOptions = { fileName, rangeSize: 1024 * 1024, uploadEventHandlers, + uploadSessionURL: "optional_custom_uploadSessionURL" //if undefined defaults to "/me/drive/root:/{file-path}:/createUploadSession" }; const readStream = fs.createReadStream(`./fileName`); const fileObject = new StreamUpload(readStream, fileName, totalsize); diff --git a/src/tasks/OneDriveLargeFileUploadTask.ts b/src/tasks/OneDriveLargeFileUploadTask.ts index b2c3bd84b..a35b59cea 100644 --- a/src/tasks/OneDriveLargeFileUploadTask.ts +++ b/src/tasks/OneDriveLargeFileUploadTask.ts @@ -166,7 +166,7 @@ export class OneDriveLargeFileUploadTask extends LargeFileUploadTask { if (!client || !fileObject || !options) { throw new GraphClientError("Please provide the Graph client instance, FileObject interface implementation and OneDriveLargeFileUploadOptions value"); } - const requestUrl = options?.uploadSessionURL ? options.uploadSessionURL: OneDriveLargeFileUploadTask.constructCreateSessionUrl(options.fileName, options.path); + const requestUrl = options.uploadSessionURL ? options.uploadSessionURL: OneDriveLargeFileUploadTask.constructCreateSessionUrl(options.fileName, options.path); const uploadSessionPayload: OneDriveFileUploadSessionPayLoad = { fileName: options.fileName, fileDescription: options.fileDescription,