Skip to content

Commit a7a46f5

Browse files
authored
Merge pull request #389 from Yang-33/validate-messages
Add validate message objects APIs
2 parents 527be4a + bac7422 commit a7a46f5

File tree

3 files changed

+201
-1
lines changed

3 files changed

+201
-1
lines changed

docs/api-reference/client.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ class Client {
3030
broadcast(messages: Message | Message[], notificationDisabled: boolean = false): Promise<MessageAPIResponseBase>
3131
getMessageContent(messageId: string): Promise<Readable>
3232

33+
// Validate message objects
34+
validatePushMessageObjects(messages: Types.Message | Types.Message[]): Promise<Types.MessageAPIResponseBase>
35+
validateReplyMessageObjects(messages: Types.Message | Types.Message[]): Promise<Types.MessageAPIResponseBase>
36+
validateMulticastMessageObjects(messages: Types.Message | Types.Message[]): Promise<Types.MessageAPIResponseBase>
37+
validateNarrowcastMessageObjects(messages: Types.Message | Types.Message[]): Promise<Types.MessageAPIResponseBase>
38+
validateBroadcastMessageObjects(messages: Types.Message | Types.Message[]): Promise<Types.MessageAPIResponseBase>
39+
3340
// Profile
3441
getProfile(userId: string): Promise<Profile>
3542

@@ -308,6 +315,72 @@ client.getMessageContent('message_id')
308315
stream.pipe(...)
309316
})
310317
```
318+
### Validate message objects
319+
320+
#### `validatePushMessageObjects(messages: Message | Message[]): Promise<MessageAPIResponseBase>`
321+
322+
It corresponds to the [Validate push message objects](https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-push-message) API.
323+
324+
The argument is messages to be sent.
325+
326+
``` js
327+
client.validatePushMessageObjects({
328+
type: 'text',
329+
text: 'hello, world',
330+
})
331+
```
332+
333+
#### `validateReplyMessageObjects(messages: Message | Message[]): Promise<MessageAPIResponseBase>`
334+
335+
It corresponds to the [Validate reply message objects](https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-reply-message) API.
336+
337+
The argument is messages to be sent.
338+
339+
``` js
340+
client.validateReplyMessageObjects({
341+
type: 'text',
342+
text: 'hello, world',
343+
})
344+
```
345+
346+
#### `validateMulticastMessageObjects(messages: Message | Message[]): Promise<MessageAPIResponseBase>`
347+
348+
It corresponds to the [Validate multicast message objects](https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-multicast-message) API.
349+
350+
The argument is messages to be sent.
351+
352+
``` js
353+
client.validateMulticastMessageObjects({
354+
type: 'text',
355+
text: 'hello, world',
356+
})
357+
```
358+
359+
#### `validateNarrowcastMessageObjects(messages: Message | Message[]): Promise<MessageAPIResponseBase>`
360+
361+
It corresponds to the [Validate narrowcast message objects](https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-narrowcast-message) API.
362+
363+
The argument is messages to be sent.
364+
365+
``` js
366+
client.validateNarrowcastMessageObjects({
367+
type: 'text',
368+
text: 'hello, world',
369+
})
370+
```
371+
372+
#### `validateBroadcastMessageObjects(messages: Message | Message[], notificationDisabled: boolean = false): Promise<any>`
373+
374+
It corresponds to the [Validate broadcast message objects](https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-broadcast-message) API.
375+
376+
The argument is messages to be sent.
377+
378+
``` js
379+
client.validateBroadcastMessageObjects({
380+
type: 'text',
381+
text: 'hello, world',
382+
})
383+
```
311384

312385
### Profile
313386

lib/client.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,62 @@ export default class Client {
140140
);
141141
}
142142

143+
public validatePushMessageObjects(
144+
messages: Types.Message | Types.Message[],
145+
): Promise<Types.MessageAPIResponseBase> {
146+
return this.http.post(
147+
`${MESSAGING_API_PREFIX}/message/validate/push`,
148+
{
149+
messages: toArray(messages),
150+
},
151+
this.generateRequestConfig(),
152+
);
153+
}
154+
155+
public validateReplyMessageObjects(
156+
messages: Types.Message | Types.Message[],
157+
): Promise<Types.MessageAPIResponseBase> {
158+
return this.http.post(`${MESSAGING_API_PREFIX}/message/validate/reply`, {
159+
messages: toArray(messages),
160+
});
161+
}
162+
163+
public async validateMulticastMessageObjects(
164+
messages: Types.Message | Types.Message[],
165+
): Promise<Types.MessageAPIResponseBase> {
166+
return this.http.post(
167+
`${MESSAGING_API_PREFIX}/message/validate/multicast`,
168+
{
169+
messages: toArray(messages),
170+
},
171+
this.generateRequestConfig(),
172+
);
173+
}
174+
175+
public async validateNarrowcastMessageObjects(
176+
messages: Types.Message | Types.Message[],
177+
): Promise<Types.MessageAPIResponseBase> {
178+
return this.http.post(
179+
`${MESSAGING_API_PREFIX}/message/validate/narrowcast`,
180+
{
181+
messages: toArray(messages),
182+
},
183+
this.generateRequestConfig(),
184+
);
185+
}
186+
187+
public async validateBroadcastMessageObjects(
188+
messages: Types.Message | Types.Message[],
189+
): Promise<Types.MessageAPIResponseBase> {
190+
return this.http.post(
191+
`${MESSAGING_API_PREFIX}/message/validate/broadcast`,
192+
{
193+
messages: toArray(messages),
194+
},
195+
this.generateRequestConfig(),
196+
);
197+
}
198+
143199
public async getProfile(userId: string): Promise<Types.Profile> {
144200
const profile = await this.http.get<Types.Profile>(
145201
`${MESSAGING_API_PREFIX}/profile/${userId}`,

test/client.spec.ts

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { readFileSync } from "fs";
22
import { join } from "path";
3-
import { deepEqual, equal, ok } from "assert";
3+
import { deepEqual, equal, ok, strictEqual } from "assert";
44
import { URL } from "url";
55
import Client, { OAuth } from "../lib/client";
66
import * as Types from "../lib/types";
@@ -153,6 +153,16 @@ describe("client", () => {
153153
equal(res["x-line-request-id"], "X-Line-Request-Id");
154154
});
155155

156+
it("validateReplyMessageObjects", async () => {
157+
const scope = mockPost(MESSAGING_API_PREFIX, `/message/validate/reply`, {
158+
messages: [testMsg],
159+
});
160+
161+
const res = await client.validateReplyMessageObjects(testMsg);
162+
strictEqual(scope.isDone(), true);
163+
strictEqual(res["x-line-request-id"], "X-Line-Request-Id");
164+
});
165+
156166
it("push", async () => {
157167
const scope = mockPost(MESSAGING_API_PREFIX, `/message/push`, {
158168
messages: [testMsg],
@@ -165,6 +175,16 @@ describe("client", () => {
165175
equal(res["x-line-request-id"], "X-Line-Request-Id");
166176
});
167177

178+
it("validatePushMessageObjects", async () => {
179+
const scope = mockPost(MESSAGING_API_PREFIX, `/message/validate/push`, {
180+
messages: [testMsg],
181+
});
182+
183+
const res = await client.validatePushMessageObjects(testMsg);
184+
strictEqual(scope.isDone(), true);
185+
strictEqual(res["x-line-request-id"], "X-Line-Request-Id");
186+
});
187+
168188
it("multicast", async () => {
169189
const ids = ["test_user_id_1", "test_user_id_2", "test_user_id_3"];
170190
const scope = mockPost(MESSAGING_API_PREFIX, `/message/multicast`, {
@@ -178,6 +198,23 @@ describe("client", () => {
178198
equal(res["x-line-request-id"], "X-Line-Request-Id");
179199
});
180200

201+
it("validateMulticastMessageObjects", async () => {
202+
const scope = mockPost(
203+
MESSAGING_API_PREFIX,
204+
`/message/validate/multicast`,
205+
{
206+
messages: [testMsg, testMsg],
207+
},
208+
);
209+
210+
const res = await client.validateMulticastMessageObjects([
211+
testMsg,
212+
testMsg,
213+
]);
214+
strictEqual(scope.isDone(), true);
215+
strictEqual(res["x-line-request-id"], "X-Line-Request-Id");
216+
});
217+
181218
it("narrowcast", async () => {
182219
const recipient: Types.ReceieptObject = {
183220
type: "operator",
@@ -267,6 +304,23 @@ describe("client", () => {
267304
equal(res["x-line-request-id"], "X-Line-Request-Id");
268305
});
269306

307+
it("validateNarrowcastMessageObjects", async () => {
308+
const scope = mockPost(
309+
MESSAGING_API_PREFIX,
310+
`/message/validate/narrowcast`,
311+
{
312+
messages: [testMsg, testMsg],
313+
},
314+
);
315+
316+
const res = await client.validateNarrowcastMessageObjects([
317+
testMsg,
318+
testMsg,
319+
]);
320+
strictEqual(scope.isDone(), true);
321+
strictEqual(res["x-line-request-id"], "X-Line-Request-Id");
322+
});
323+
270324
it("broadcast", async () => {
271325
const scope = mockPost(MESSAGING_API_PREFIX, `/message/broadcast`, {
272326
messages: [testMsg, testMsg],
@@ -278,6 +332,23 @@ describe("client", () => {
278332
equal(res["x-line-request-id"], "X-Line-Request-Id");
279333
});
280334

335+
it("validateBroadcastMessageObjects", async () => {
336+
const scope = mockPost(
337+
MESSAGING_API_PREFIX,
338+
`/message/validate/broadcast`,
339+
{
340+
messages: [testMsg, testMsg],
341+
},
342+
);
343+
344+
const res = await client.validateBroadcastMessageObjects([
345+
testMsg,
346+
testMsg,
347+
]);
348+
strictEqual(scope.isDone(), true);
349+
strictEqual(res["x-line-request-id"], "X-Line-Request-Id");
350+
});
351+
281352
it("getProfile", async () => {
282353
const scope = mockGet(MESSAGING_API_PREFIX, "/profile/test_user_id");
283354

0 commit comments

Comments
 (0)