Skip to content

Commit b7aecc5

Browse files
authored
Merge pull request #31 from OneNoteDev/query-params
Support passing in query params in OneNoteApi
2 parents b3bd0b5 + b842d4f commit b7aecc5

File tree

3 files changed

+26
-13
lines changed

3 files changed

+26
-13
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "2.0.14",
2+
"version": "2.0.15",
33
"name": "onenoteapi",
44
"description": "JavaScript library to make calling the OneNote API easier.",
55
"main": "dist/OneNoteApi.js",

src/scripts/oneNoteApi.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ export class OneNoteApi extends OneNoteApiBase implements IOneNoteApi {
4444
/**
4545
* GetWopiProperties
4646
*/
47-
public getNotebookWopiProperties(notebookSelfPath: string, frameAction: string): Promise<ResponsePackage<any>> {
47+
public getNotebookWopiProperties(notebookSelfPath: string, frameAction: string, queryParams?: { [key: string]: string }): Promise<ResponsePackage<any>> {
4848
let url = notebookSelfPath + "/Microsoft.OneNote.Api.GetWopiProperties(frameAction='" + frameAction + "')";
4949

50-
return this.requestPromise(url, null, null, null, null, true /* URL contains version */);
50+
return this.requestPromise(url, null, null, null, null, true /* URL contains version */, queryParams /* query params */);
5151
}
5252

5353
/**
@@ -195,8 +195,8 @@ export class OneNoteApi extends OneNoteApiBase implements IOneNoteApi {
195195
/**
196196
* Method that can be used to send any HTTP request
197197
*/
198-
public performApiCall(url: string, data?: XHRData, contentType?: string, httpMethod?: string, isFullUrl?: boolean, urlContainsVersion?: boolean): Promise<ResponsePackage<any>> {
199-
return this.requestPromise(url, data, contentType, httpMethod, isFullUrl, urlContainsVersion);
198+
public performApiCall(url: string, data?: XHRData, contentType?: string, httpMethod?: string, isFullUrl?: boolean, urlContainsVersion?: boolean, queryParams?: { [key: string]: string }): Promise<ResponsePackage<any>> {
199+
return this.requestPromise(url, data, contentType, httpMethod, isFullUrl, urlContainsVersion, queryParams);
200200
}
201201

202202
/**

src/scripts/oneNoteApiBase.ts

+21-8
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export class OneNoteApiBase {
3131
this.queryParams = queryParams;
3232
}
3333

34-
protected requestPromise(url: string, data?: XHRData, contentType?: string, httpMethod?: string, isFullUrl?: boolean, urlContainsVersion?: boolean): Promise<ResponsePackage<any>> {
34+
protected requestPromise(url: string, data?: XHRData, contentType?: string, httpMethod?: string, isFullUrl?: boolean, urlContainsVersion?: boolean, extraQueryParams?: { [key: string]: string }): Promise<ResponsePackage<any>> {
3535
let fullUrl;
3636
if (isFullUrl) {
3737
fullUrl = url;
@@ -40,7 +40,7 @@ export class OneNoteApiBase {
4040
}
4141

4242
// Append specified query params
43-
fullUrl = this.appendQueryParams(fullUrl);
43+
fullUrl = this.appendQueryParams(fullUrl, extraQueryParams);
4444

4545
if (!contentType) {
4646
contentType = "application/json";
@@ -55,19 +55,32 @@ export class OneNoteApiBase {
5555
}));
5656
}
5757

58-
private appendQueryParams(url: string): string {
59-
let queryParams = this.queryParams;
60-
if (!queryParams) {
58+
private appendQueryParams(url: string, extraQueryParams?: { [key: string]: string }): string {
59+
// Merge both constructor query params and parameter query params
60+
const newQueryParams = {};
61+
if (this.queryParams) {
62+
for (const key in this.queryParams) {
63+
newQueryParams[key] = this.queryParams[key];
64+
}
65+
}
66+
if (extraQueryParams) {
67+
for (const key in extraQueryParams) {
68+
newQueryParams[key] = extraQueryParams[key];
69+
}
70+
}
71+
72+
if (!newQueryParams || Object.keys(newQueryParams).length === 0) {
6173
return url;
6274
}
6375

6476
let queryParamArray = [];
65-
for (const key in queryParams) {
66-
if (queryParams.hasOwnProperty(key)) {
67-
const queryParamValue = encodeURIComponent(queryParams[key]);
77+
for (const key in newQueryParams) {
78+
if (newQueryParams.hasOwnProperty(key)) {
79+
const queryParamValue = encodeURIComponent(newQueryParams[key]);
6880
queryParamArray.push(key + "=" + queryParamValue);
6981
}
7082
}
83+
7184
const serializedQueryParams = queryParamArray.join("&");
7285
if (url.indexOf("?") === -1) {
7386
return url + "?" + serializedQueryParams;

0 commit comments

Comments
 (0)