Skip to content

Commit 821d8c2

Browse files
authored
Allow custom upload session url in OneDriveLargeFileUpload.create (#1010)
* adding upload session url option in create onedrive * test success special folder upload
1 parent 623b873 commit 821d8c2

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

docs/tasks/LargeFileUploadTask.md

+1
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ const options: OneDriveLargeFileUploadOptions = {
137137
fileName,
138138
rangeSize: 1024 * 1024,
139139
uploadEventHandlers,
140+
uploadSessionURL: "optional_custom_uploadSessionURL" //if undefined defaults to "/me/drive/root:/{file-path}:/createUploadSession"
140141
};
141142
const readStream = fs.createReadStream(`./fileName`);
142143
const fileObject = new StreamUpload(readStream, fileName, totalsize);

src/tasks/OneDriveLargeFileUploadTask.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ export interface OneDriveLargeFileUploadOptions {
3333
rangeSize?: number;
3434
conflictBehavior?: string;
3535
uploadEventHandlers?: UploadEventHandlers;
36+
/// <summary>
37+
/// Default upload session url is : "/me/drive/root:/{file-path}:/createUploadSession"
38+
/// Set this property to override the default upload session url. Example: "/me/drive/special/{name}"
39+
/// </summary>
40+
uploadSessionURL?: string;
3641
}
3742

3843
/**
@@ -161,7 +166,7 @@ export class OneDriveLargeFileUploadTask<T> extends LargeFileUploadTask<T> {
161166
if (!client || !fileObject || !options) {
162167
throw new GraphClientError("Please provide the Graph client instance, FileObject interface implementation and OneDriveLargeFileUploadOptions value");
163168
}
164-
const requestUrl = OneDriveLargeFileUploadTask.constructCreateSessionUrl(options.fileName, options.path);
169+
const requestUrl = options.uploadSessionURL ? options.uploadSessionURL: OneDriveLargeFileUploadTask.constructCreateSessionUrl(options.fileName, options.path);
165170
const uploadSessionPayload: OneDriveFileUploadSessionPayLoad = {
166171
fileName: options.fileName,
167172
fileDescription: options.fileDescription,

test/development/workload/largeFileUpload.ts

+13
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,17 @@ describe("LargeFileUpload", () => {
5858
const response = await uploadTask.upload();
5959
assert.isDefined(response.responseBody["id"]);
6060
}).timeout(30 * 1000);
61+
62+
it("Test OneDrive File Upload to custom url", async () => {
63+
const options: OneDriveLargeFileUploadOptions = {
64+
path: "/Documents",
65+
fileName,
66+
rangeSize: 1024 * 1024,
67+
uploadSessionURL: `https://graph.microsoft.com/v1.0/me/drive/special/approot:/sampleTest/${fileName}:/createUploadSession`,
68+
};
69+
const file = fs.readFileSync(`./test/sample_files/${fileName}`);
70+
const uploadTask = await OneDriveLargeFileUploadTask.create(client, file, options);
71+
const response = await uploadTask.upload();
72+
assert.isDefined(response.responseBody["id"]);
73+
}).timeout(30 * 1000);
6174
});

0 commit comments

Comments
 (0)