Skip to content

Commit 8cffd97

Browse files
authored
Fix get parameter and delete it only when undefined (line#754)
This change is almost same as line#600. When we call `client.getFollowers(undefined, 100)`, currently it requests `/v2/bot/followers/ids?start=&limit=100`. We should make it to request `/v2/bot/followers/ids?limit=100`. Thus this change delete kay from parameter if value is undefined.
1 parent 7e3a127 commit 8cffd97

File tree

7 files changed

+142
-0
lines changed

7 files changed

+142
-0
lines changed

generator/src/main/resources/line-bot-sdk-nodejs-generator/apiBody/normal.pebble

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
"{{param.paramName}}": {{param.paramName}},
2525
{% endfor %}
2626
};
27+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
28+
if (queryParams[key] === undefined) {
29+
delete queryParams[key];
30+
}
31+
});
2732
{% endif %}
2833
{% if op.hasHeaderParams %}const headerParams = {
2934
{% for param in op.headerParams -%}

lib/channel-access-token/api/channelAccessTokenClient.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ export class ChannelAccessTokenClient {
9494
clientAssertionType: clientAssertionType,
9595
clientAssertion: clientAssertion,
9696
};
97+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
98+
if (queryParams[key] === undefined) {
99+
delete queryParams[key];
100+
}
101+
});
97102

98103
const res = await this.httpClient.get(
99104
"/oauth2/v2.1/tokens/kid",
@@ -415,6 +420,11 @@ export class ChannelAccessTokenClient {
415420
const queryParams = {
416421
accessToken: accessToken,
417422
};
423+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
424+
if (queryParams[key] === undefined) {
425+
delete queryParams[key];
426+
}
427+
});
418428

419429
const res = await this.httpClient.get("/oauth2/v2.1/verify", queryParams);
420430
return { httpResponse: res, body: await res.json() };

lib/insight/api/insightClient.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ export class InsightClient {
109109
const queryParams = {
110110
requestId: requestId,
111111
};
112+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
113+
if (queryParams[key] === undefined) {
114+
delete queryParams[key];
115+
}
116+
});
112117

113118
const res = await this.httpClient.get(
114119
"/v2/bot/insight/message/event",
@@ -143,6 +148,11 @@ export class InsightClient {
143148
const queryParams = {
144149
date: date,
145150
};
151+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
152+
if (queryParams[key] === undefined) {
153+
delete queryParams[key];
154+
}
155+
});
146156

147157
const res = await this.httpClient.get(
148158
"/v2/bot/insight/followers",
@@ -177,6 +187,11 @@ export class InsightClient {
177187
const queryParams = {
178188
date: date,
179189
};
190+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
191+
if (queryParams[key] === undefined) {
192+
delete queryParams[key];
193+
}
194+
});
180195

181196
const res = await this.httpClient.get(
182197
"/v2/bot/insight/message/delivery",
@@ -225,6 +240,11 @@ export class InsightClient {
225240
from: from,
226241
to: to,
227242
};
243+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
244+
if (queryParams[key] === undefined) {
245+
delete queryParams[key];
246+
}
247+
});
228248

229249
const res = await this.httpClient.get(
230250
"/v2/bot/insight/message/event/aggregation",

lib/manage-audience/api/manageAudienceClient.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,11 @@ export class ManageAudienceClient {
374374
includesExternalPublicGroups: includesExternalPublicGroups,
375375
createRoute: createRoute,
376376
};
377+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
378+
if (queryParams[key] === undefined) {
379+
delete queryParams[key];
380+
}
381+
});
377382

378383
const res = await this.httpClient.get(
379384
"/v2/bot/audienceGroup/list",

lib/messaging-api/api/messagingApiClient.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,11 @@ export class MessagingApiClient {
331331
const queryParams = {
332332
date: date,
333333
};
334+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
335+
if (queryParams[key] === undefined) {
336+
delete queryParams[key];
337+
}
338+
});
334339

335340
const res = await this.httpClient.get(
336341
"/v2/bot/message/delivery/ad_phone",
@@ -369,6 +374,11 @@ export class MessagingApiClient {
369374
limit: limit,
370375
start: start,
371376
};
377+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
378+
if (queryParams[key] === undefined) {
379+
delete queryParams[key];
380+
}
381+
});
372382

373383
const res = await this.httpClient.get(
374384
"/v2/bot/message/aggregation/list",
@@ -469,6 +479,11 @@ export class MessagingApiClient {
469479
start: start,
470480
limit: limit,
471481
};
482+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
483+
if (queryParams[key] === undefined) {
484+
delete queryParams[key];
485+
}
486+
});
472487

473488
const res = await this.httpClient.get("/v2/bot/followers/ids", queryParams);
474489
return { httpResponse: res, body: await res.json() };
@@ -567,6 +582,11 @@ export class MessagingApiClient {
567582
const queryParams = {
568583
start: start,
569584
};
585+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
586+
if (queryParams[key] === undefined) {
587+
delete queryParams[key];
588+
}
589+
});
570590

571591
const res = await this.httpClient.get(
572592
"/v2/bot/group/{groupId}/members/ids".replace(
@@ -669,6 +689,11 @@ export class MessagingApiClient {
669689
const queryParams = {
670690
requestId: requestId,
671691
};
692+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
693+
if (queryParams[key] === undefined) {
694+
delete queryParams[key];
695+
}
696+
});
672697

673698
const res = await this.httpClient.get(
674699
"/v2/bot/message/progress/narrowcast",
@@ -701,6 +726,11 @@ export class MessagingApiClient {
701726
const queryParams = {
702727
date: date,
703728
};
729+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
730+
if (queryParams[key] === undefined) {
731+
delete queryParams[key];
732+
}
733+
});
704734

705735
const res = await this.httpClient.get(
706736
"/v2/bot/message/delivery/broadcast",
@@ -733,6 +763,11 @@ export class MessagingApiClient {
733763
const queryParams = {
734764
date: date,
735765
};
766+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
767+
if (queryParams[key] === undefined) {
768+
delete queryParams[key];
769+
}
770+
});
736771

737772
const res = await this.httpClient.get(
738773
"/v2/bot/message/delivery/multicast",
@@ -765,6 +800,11 @@ export class MessagingApiClient {
765800
const queryParams = {
766801
date: date,
767802
};
803+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
804+
if (queryParams[key] === undefined) {
805+
delete queryParams[key];
806+
}
807+
});
768808

769809
const res = await this.httpClient.get(
770810
"/v2/bot/message/delivery/push",
@@ -797,6 +837,11 @@ export class MessagingApiClient {
797837
const queryParams = {
798838
date: date,
799839
};
840+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
841+
if (queryParams[key] === undefined) {
842+
delete queryParams[key];
843+
}
844+
});
800845

801846
const res = await this.httpClient.get(
802847
"/v2/bot/message/delivery/reply",
@@ -829,6 +874,11 @@ export class MessagingApiClient {
829874
const queryParams = {
830875
date: date,
831876
};
877+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
878+
if (queryParams[key] === undefined) {
879+
delete queryParams[key];
880+
}
881+
});
832882

833883
const res = await this.httpClient.get(
834884
"/v2/bot/message/delivery/pnp",
@@ -965,6 +1015,11 @@ export class MessagingApiClient {
9651015
const queryParams = {
9661016
requestId: requestId,
9671017
};
1018+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
1019+
if (queryParams[key] === undefined) {
1020+
delete queryParams[key];
1021+
}
1022+
});
9681023

9691024
const res = await this.httpClient.get(
9701025
"/v2/bot/richmenu/progress/batch",
@@ -1111,6 +1166,11 @@ export class MessagingApiClient {
11111166
const queryParams = {
11121167
start: start,
11131168
};
1169+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
1170+
if (queryParams[key] === undefined) {
1171+
delete queryParams[key];
1172+
}
1173+
});
11141174

11151175
const res = await this.httpClient.get(
11161176
"/v2/bot/room/{roomId}/members/ids".replace("{roomId}", String(roomId)),

lib/module/api/lineModuleClient.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,11 @@ export class LineModuleClient {
158158
start: start,
159159
limit: limit,
160160
};
161+
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
162+
if (queryParams[key] === undefined) {
163+
delete queryParams[key];
164+
}
165+
});
161166

162167
const res = await this.httpClient.get("/v2/bot/list", queryParams);
163168
return { httpResponse: res, body: await res.json() };

test/libs-messagingApi.spec.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,4 +157,41 @@ describe("messagingApi", () => {
157157
next: "yANU9IA..",
158158
});
159159
});
160+
161+
it("get followers without |start| parameter", async () => {
162+
let requestCount = 0;
163+
server.use(
164+
http.get(
165+
"https://api.line.me/v2/bot/followers/ids",
166+
async ({ request, params, cookies }) => {
167+
requestCount++;
168+
169+
equal(
170+
request.headers.get("Authorization"),
171+
"Bearer test_channel_access_token",
172+
);
173+
equal(
174+
request.headers.get("User-Agent"),
175+
`${pkg.name}/${pkg.version}`,
176+
);
177+
178+
const url = new URL(request.url);
179+
const searchParams = url.searchParams;
180+
equal(searchParams.has("start"), false);
181+
equal(searchParams.get("limit"), "100");
182+
183+
return HttpResponse.json({
184+
userIds: ["UAAAAAAAAAAAAAA"],
185+
next: "yANU9IA..",
186+
});
187+
},
188+
),
189+
);
190+
191+
const res = await client.getFollowers(undefined, 100);
192+
deepEqual(res, {
193+
userIds: ["UAAAAAAAAAAAAAA"],
194+
next: "yANU9IA..",
195+
});
196+
});
160197
});

0 commit comments

Comments
 (0)