Skip to content

Commit

Permalink
Fix get parameter and delete it only when undefined (#754)
Browse files Browse the repository at this point in the history
This change is almost same as
#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.
  • Loading branch information
Yang-33 authored Mar 12, 2024
1 parent 7e3a127 commit 8cffd97
Show file tree
Hide file tree
Showing 7 changed files with 142 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
"{{param.paramName}}": {{param.paramName}},
{% endfor %}
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});
{% endif %}
{% if op.hasHeaderParams %}const headerParams = {
{% for param in op.headerParams -%}
Expand Down
10 changes: 10 additions & 0 deletions lib/channel-access-token/api/channelAccessTokenClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,11 @@ export class ChannelAccessTokenClient {
clientAssertionType: clientAssertionType,
clientAssertion: clientAssertion,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/oauth2/v2.1/tokens/kid",
Expand Down Expand Up @@ -415,6 +420,11 @@ export class ChannelAccessTokenClient {
const queryParams = {
accessToken: accessToken,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get("/oauth2/v2.1/verify", queryParams);
return { httpResponse: res, body: await res.json() };
Expand Down
20 changes: 20 additions & 0 deletions lib/insight/api/insightClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ export class InsightClient {
const queryParams = {
requestId: requestId,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/insight/message/event",
Expand Down Expand Up @@ -143,6 +148,11 @@ export class InsightClient {
const queryParams = {
date: date,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/insight/followers",
Expand Down Expand Up @@ -177,6 +187,11 @@ export class InsightClient {
const queryParams = {
date: date,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/insight/message/delivery",
Expand Down Expand Up @@ -225,6 +240,11 @@ export class InsightClient {
from: from,
to: to,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/insight/message/event/aggregation",
Expand Down
5 changes: 5 additions & 0 deletions lib/manage-audience/api/manageAudienceClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,11 @@ export class ManageAudienceClient {
includesExternalPublicGroups: includesExternalPublicGroups,
createRoute: createRoute,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/audienceGroup/list",
Expand Down
60 changes: 60 additions & 0 deletions lib/messaging-api/api/messagingApiClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,11 @@ export class MessagingApiClient {
const queryParams = {
date: date,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/message/delivery/ad_phone",
Expand Down Expand Up @@ -369,6 +374,11 @@ export class MessagingApiClient {
limit: limit,
start: start,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/message/aggregation/list",
Expand Down Expand Up @@ -469,6 +479,11 @@ export class MessagingApiClient {
start: start,
limit: limit,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get("/v2/bot/followers/ids", queryParams);
return { httpResponse: res, body: await res.json() };
Expand Down Expand Up @@ -567,6 +582,11 @@ export class MessagingApiClient {
const queryParams = {
start: start,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/group/{groupId}/members/ids".replace(
Expand Down Expand Up @@ -669,6 +689,11 @@ export class MessagingApiClient {
const queryParams = {
requestId: requestId,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/message/progress/narrowcast",
Expand Down Expand Up @@ -701,6 +726,11 @@ export class MessagingApiClient {
const queryParams = {
date: date,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/message/delivery/broadcast",
Expand Down Expand Up @@ -733,6 +763,11 @@ export class MessagingApiClient {
const queryParams = {
date: date,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/message/delivery/multicast",
Expand Down Expand Up @@ -765,6 +800,11 @@ export class MessagingApiClient {
const queryParams = {
date: date,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/message/delivery/push",
Expand Down Expand Up @@ -797,6 +837,11 @@ export class MessagingApiClient {
const queryParams = {
date: date,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/message/delivery/reply",
Expand Down Expand Up @@ -829,6 +874,11 @@ export class MessagingApiClient {
const queryParams = {
date: date,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/message/delivery/pnp",
Expand Down Expand Up @@ -965,6 +1015,11 @@ export class MessagingApiClient {
const queryParams = {
requestId: requestId,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/richmenu/progress/batch",
Expand Down Expand Up @@ -1111,6 +1166,11 @@ export class MessagingApiClient {
const queryParams = {
start: start,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get(
"/v2/bot/room/{roomId}/members/ids".replace("{roomId}", String(roomId)),
Expand Down
5 changes: 5 additions & 0 deletions lib/module/api/lineModuleClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,11 @@ export class LineModuleClient {
start: start,
limit: limit,
};
Object.keys(queryParams).forEach((key: keyof typeof queryParams) => {
if (queryParams[key] === undefined) {
delete queryParams[key];
}
});

const res = await this.httpClient.get("/v2/bot/list", queryParams);
return { httpResponse: res, body: await res.json() };
Expand Down
37 changes: 37 additions & 0 deletions test/libs-messagingApi.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,4 +157,41 @@ describe("messagingApi", () => {
next: "yANU9IA..",
});
});

it("get followers without |start| parameter", async () => {
let requestCount = 0;
server.use(
http.get(
"https://api.line.me/v2/bot/followers/ids",
async ({ request, params, cookies }) => {
requestCount++;

equal(
request.headers.get("Authorization"),
"Bearer test_channel_access_token",
);
equal(
request.headers.get("User-Agent"),
`${pkg.name}/${pkg.version}`,
);

const url = new URL(request.url);
const searchParams = url.searchParams;
equal(searchParams.has("start"), false);
equal(searchParams.get("limit"), "100");

return HttpResponse.json({
userIds: ["UAAAAAAAAAAAAAA"],
next: "yANU9IA..",
});
},
),
);

const res = await client.getFollowers(undefined, 100);
deepEqual(res, {
userIds: ["UAAAAAAAAAAAAAA"],
next: "yANU9IA..",
});
});
});

0 comments on commit 8cffd97

Please sign in to comment.