@boxfoxs/biztalk 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ import { BiztalkRequester } from "./requester";
2
+ export declare class GetResultApi {
3
+ private readonly requester;
4
+ constructor(requester: BiztalkRequester);
5
+ fetch(): Promise<any>;
6
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GetResultApi = void 0;
13
+ class GetResultApi {
14
+ constructor(requester) {
15
+ this.requester = requester;
16
+ }
17
+ fetch() {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const res = yield this.requester.get("/v2/kko/getResultAll");
20
+ return res.data;
21
+ });
22
+ }
23
+ }
24
+ exports.GetResultApi = GetResultApi;
@@ -0,0 +1,13 @@
1
+ import { BiztalkRequester } from "./requester";
2
+ interface Payload {
3
+ bsid: string;
4
+ passwd: string;
5
+ }
6
+ export declare class GetTokenApi {
7
+ private readonly requester;
8
+ constructor(requester: BiztalkRequester);
9
+ fetch(data: Payload): Promise<string>;
10
+ }
11
+ export declare class GetTokenError extends Error {
12
+ }
13
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GetTokenError = exports.GetTokenApi = void 0;
13
+ class GetTokenApi {
14
+ constructor(requester) {
15
+ this.requester = requester;
16
+ }
17
+ fetch(data) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const res = yield this.requester.post("/v2/auth/getToken", data, {
20
+ headers: { "Content-Type": "application/json" },
21
+ });
22
+ if (res.data.responseCode != "1000") {
23
+ throw new GetTokenError(res.data.msg);
24
+ }
25
+ return res.data.token;
26
+ });
27
+ }
28
+ }
29
+ exports.GetTokenApi = GetTokenApi;
30
+ class GetTokenError extends Error {
31
+ }
32
+ exports.GetTokenError = GetTokenError;
@@ -0,0 +1,65 @@
1
+ import { BiztalkRequester } from "./requester";
2
+ export declare class SendAlimtalkApi {
3
+ private readonly requester;
4
+ constructor(requester: BiztalkRequester);
5
+ send(data: SendAlimtalkPayload): Promise<string>;
6
+ }
7
+ export declare class SendAlimtalkError extends Error {
8
+ }
9
+ export interface SendAlimtalkPayload {
10
+ msgIdx: string;
11
+ countryCode: string;
12
+ resMethod: string;
13
+ tmpltCode: string;
14
+ message: string;
15
+ recipient: string;
16
+ appUserId?: string;
17
+ attach?: Attach;
18
+ supplement?: Supplement;
19
+ title?: string;
20
+ messageType?: "AT" | "AI";
21
+ orgCode?: string;
22
+ price?: string;
23
+ }
24
+ export interface Attach {
25
+ button?: {
26
+ name: string;
27
+ type: "AL" | "DS" | "WL" | "BK" | "MD" | "AC" | "BT" | "P1" | "P2" | "P3";
28
+ scheme_android?: string;
29
+ scheme_ios?: string;
30
+ url_mobile?: string;
31
+ url_pc?: string;
32
+ chat_extra?: string;
33
+ chat_event?: string;
34
+ plugin_id?: string;
35
+ oneclick_id?: string;
36
+ product_id?: string;
37
+ }[];
38
+ item_highlight?: {
39
+ title: string;
40
+ description?: string;
41
+ };
42
+ item?: {
43
+ list: {
44
+ title: string;
45
+ description: string;
46
+ }[];
47
+ summary: {
48
+ title: string;
49
+ description: string;
50
+ };
51
+ };
52
+ quick_reply?: {
53
+ name: string;
54
+ type: string;
55
+ scheme_android?: string;
56
+ scheme_ios?: string;
57
+ url_mobile?: string;
58
+ url_pc?: string;
59
+ chat_extra?: string;
60
+ chat_event?: string;
61
+ }[];
62
+ }
63
+ interface Supplement {
64
+ }
65
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SendAlimtalkError = exports.SendAlimtalkApi = void 0;
13
+ class SendAlimtalkApi {
14
+ constructor(requester) {
15
+ this.requester = requester;
16
+ }
17
+ send(data) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const res = yield this.requester.post("/v2/kko/sendAlimTalk", Object.assign(Object.assign({}, data), { msgIdx: data.msgIdx.substring(0, 40) }), {
20
+ headers: { "Content-Type": "application/json" },
21
+ });
22
+ if (res.data.responseCode != "1000") {
23
+ throw new SendAlimtalkError(res.data.msg);
24
+ }
25
+ return res.data.token;
26
+ });
27
+ }
28
+ }
29
+ exports.SendAlimtalkApi = SendAlimtalkApi;
30
+ class SendAlimtalkError extends Error {
31
+ }
32
+ exports.SendAlimtalkError = SendAlimtalkError;
@@ -0,0 +1,6 @@
1
+ import { BiztalkRequester } from "./requester";
2
+ export declare class GetResultApi {
3
+ private readonly requester;
4
+ constructor(requester: BiztalkRequester);
5
+ fetch(): Promise<any>;
6
+ }
@@ -0,0 +1,20 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ export class GetResultApi {
11
+ constructor(requester) {
12
+ this.requester = requester;
13
+ }
14
+ fetch() {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const res = yield this.requester.get("/v2/kko/getResultAll");
17
+ return res.data;
18
+ });
19
+ }
20
+ }
@@ -0,0 +1,13 @@
1
+ import { BiztalkRequester } from "./requester";
2
+ interface Payload {
3
+ bsid: string;
4
+ passwd: string;
5
+ }
6
+ export declare class GetTokenApi {
7
+ private readonly requester;
8
+ constructor(requester: BiztalkRequester);
9
+ fetch(data: Payload): Promise<string>;
10
+ }
11
+ export declare class GetTokenError extends Error {
12
+ }
13
+ export {};
@@ -0,0 +1,27 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ export class GetTokenApi {
11
+ constructor(requester) {
12
+ this.requester = requester;
13
+ }
14
+ fetch(data) {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const res = yield this.requester.post("/v2/auth/getToken", data, {
17
+ headers: { "Content-Type": "application/json" },
18
+ });
19
+ if (res.data.responseCode != "1000") {
20
+ throw new GetTokenError(res.data.msg);
21
+ }
22
+ return res.data.token;
23
+ });
24
+ }
25
+ }
26
+ export class GetTokenError extends Error {
27
+ }
@@ -0,0 +1,65 @@
1
+ import { BiztalkRequester } from "./requester";
2
+ export declare class SendAlimtalkApi {
3
+ private readonly requester;
4
+ constructor(requester: BiztalkRequester);
5
+ send(data: SendAlimtalkPayload): Promise<string>;
6
+ }
7
+ export declare class SendAlimtalkError extends Error {
8
+ }
9
+ export interface SendAlimtalkPayload {
10
+ msgIdx: string;
11
+ countryCode: string;
12
+ resMethod: string;
13
+ tmpltCode: string;
14
+ message: string;
15
+ recipient: string;
16
+ appUserId?: string;
17
+ attach?: Attach;
18
+ supplement?: Supplement;
19
+ title?: string;
20
+ messageType?: "AT" | "AI";
21
+ orgCode?: string;
22
+ price?: string;
23
+ }
24
+ export interface Attach {
25
+ button?: {
26
+ name: string;
27
+ type: "AL" | "DS" | "WL" | "BK" | "MD" | "AC" | "BT" | "P1" | "P2" | "P3";
28
+ scheme_android?: string;
29
+ scheme_ios?: string;
30
+ url_mobile?: string;
31
+ url_pc?: string;
32
+ chat_extra?: string;
33
+ chat_event?: string;
34
+ plugin_id?: string;
35
+ oneclick_id?: string;
36
+ product_id?: string;
37
+ }[];
38
+ item_highlight?: {
39
+ title: string;
40
+ description?: string;
41
+ };
42
+ item?: {
43
+ list: {
44
+ title: string;
45
+ description: string;
46
+ }[];
47
+ summary: {
48
+ title: string;
49
+ description: string;
50
+ };
51
+ };
52
+ quick_reply?: {
53
+ name: string;
54
+ type: string;
55
+ scheme_android?: string;
56
+ scheme_ios?: string;
57
+ url_mobile?: string;
58
+ url_pc?: string;
59
+ chat_extra?: string;
60
+ chat_event?: string;
61
+ }[];
62
+ }
63
+ interface Supplement {
64
+ }
65
+ export {};
@@ -0,0 +1,27 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ export class SendAlimtalkApi {
11
+ constructor(requester) {
12
+ this.requester = requester;
13
+ }
14
+ send(data) {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const res = yield this.requester.post("/v2/kko/sendAlimTalk", Object.assign(Object.assign({}, data), { msgIdx: data.msgIdx.substring(0, 40) }), {
17
+ headers: { "Content-Type": "application/json" },
18
+ });
19
+ if (res.data.responseCode != "1000") {
20
+ throw new SendAlimtalkError(res.data.msg);
21
+ }
22
+ return res.data.token;
23
+ });
24
+ }
25
+ }
26
+ export class SendAlimtalkError extends Error {
27
+ }
@@ -0,0 +1,17 @@
1
+ import { BiztalkRequester } from "./requester";
2
+ import { SendAlimtalkPayload } from "./SendAlimtalkApi";
3
+ export * from "./GetResultApi";
4
+ export * from "./GetTokenApi";
5
+ export * from "./requester";
6
+ export * from "./SendAlimtalkApi";
7
+ export declare class BiztalkApi {
8
+ private readonly biztalkReqiester;
9
+ private readonly bsid;
10
+ private readonly passwd;
11
+ private tokenApi;
12
+ private sendApi;
13
+ private resultApi;
14
+ constructor(biztalkReqiester: BiztalkRequester, bsid: string, passwd: string);
15
+ send(payload: SendAlimtalkPayload): Promise<void>;
16
+ }
17
+ export declare function createBiztalkApi(bsid: string, passwd: string, senderKey: string): BiztalkApi;
@@ -0,0 +1,44 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { GetResultApi } from "./GetResultApi";
11
+ import { GetTokenApi } from "./GetTokenApi";
12
+ import { createBiztalkRequester } from "./requester";
13
+ import { SendAlimtalkApi } from "./SendAlimtalkApi";
14
+ export * from "./GetResultApi";
15
+ export * from "./GetTokenApi";
16
+ export * from "./requester";
17
+ export * from "./SendAlimtalkApi";
18
+ export class BiztalkApi {
19
+ constructor(biztalkReqiester, bsid, passwd) {
20
+ this.biztalkReqiester = biztalkReqiester;
21
+ this.bsid = bsid;
22
+ this.passwd = passwd;
23
+ this.tokenApi = new GetTokenApi(this.biztalkReqiester);
24
+ this.sendApi = new SendAlimtalkApi(this.biztalkReqiester);
25
+ this.resultApi = new GetResultApi(this.biztalkReqiester);
26
+ }
27
+ send(payload) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ if (payload.recipient.startsWith("09")) {
30
+ return;
31
+ }
32
+ const data = { bsid: this.bsid, passwd: this.passwd };
33
+ const token = yield this.tokenApi.fetch(data);
34
+ this.biztalkReqiester.token.set(token);
35
+ yield this.sendApi.send(payload);
36
+ yield this.resultApi.fetch();
37
+ });
38
+ }
39
+ }
40
+ export function createBiztalkApi(bsid, passwd, senderKey) {
41
+ const requester = createBiztalkRequester(senderKey);
42
+ const api = new BiztalkApi(requester, bsid, passwd);
43
+ return api;
44
+ }
@@ -0,0 +1,13 @@
1
+ import { AxiosInstance } from "axios";
2
+ export interface BiztalkRequester extends AxiosInstance {
3
+ token: Token;
4
+ }
5
+ export declare function createBiztalkRequester(senderKey: string): BiztalkRequester;
6
+ export declare function createBiztalkBypassRequester(bypassUrl: string, senderKey: string): BiztalkRequester;
7
+ export declare function applyTokenInterceptors(clinet?: AxiosInstance): BiztalkRequester;
8
+ declare class Token {
9
+ private token;
10
+ get(): string | undefined;
11
+ set(token: string): void;
12
+ }
13
+ export {};
@@ -0,0 +1,48 @@
1
+ import axios from "axios";
2
+ export function createBiztalkRequester(senderKey) {
3
+ const clinet = axios.create({
4
+ baseURL: "https://www.biztalk-api.com",
5
+ });
6
+ clinet.interceptors.request.use(function (config) {
7
+ config.data = Object.assign({ senderKey }, config.data);
8
+ return config;
9
+ });
10
+ return applyTokenInterceptors(clinet);
11
+ }
12
+ export function createBiztalkBypassRequester(bypassUrl, senderKey) {
13
+ const clinet = axios.create({ baseURL: bypassUrl });
14
+ clinet.interceptors.request.use(function (config) {
15
+ config.data = {
16
+ url: `https://www.biztalk-api.com/${config.url}`,
17
+ data: Object.assign({ senderKey }, config.data),
18
+ headers: Object.assign({}, config.headers),
19
+ method: config.method,
20
+ };
21
+ config.url = bypassUrl;
22
+ config.method = "POST";
23
+ return config;
24
+ });
25
+ return applyTokenInterceptors(clinet);
26
+ }
27
+ export function applyTokenInterceptors(clinet = axios) {
28
+ const token = new Token();
29
+ injectToken(clinet, token);
30
+ return Object.assign(clinet, { token });
31
+ }
32
+ class Token {
33
+ get() {
34
+ return this.token;
35
+ }
36
+ set(token) {
37
+ this.token = token;
38
+ }
39
+ }
40
+ function injectToken(requester, token) {
41
+ requester.interceptors.request.use(function (payload) {
42
+ const tokenValue = token.get();
43
+ if (tokenValue) {
44
+ payload.headers = Object.assign({ "bt-token": tokenValue }, payload.headers);
45
+ }
46
+ return payload;
47
+ });
48
+ }
@@ -0,0 +1,17 @@
1
+ import { BiztalkRequester } from "./requester";
2
+ import { SendAlimtalkPayload } from "./SendAlimtalkApi";
3
+ export * from "./GetResultApi";
4
+ export * from "./GetTokenApi";
5
+ export * from "./requester";
6
+ export * from "./SendAlimtalkApi";
7
+ export declare class BiztalkApi {
8
+ private readonly biztalkReqiester;
9
+ private readonly bsid;
10
+ private readonly passwd;
11
+ private tokenApi;
12
+ private sendApi;
13
+ private resultApi;
14
+ constructor(biztalkReqiester: BiztalkRequester, bsid: string, passwd: string);
15
+ send(payload: SendAlimtalkPayload): Promise<void>;
16
+ }
17
+ export declare function createBiztalkApi(bsid: string, passwd: string, senderKey: string): BiztalkApi;
package/dist/index.js ADDED
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.createBiztalkApi = exports.BiztalkApi = void 0;
27
+ const GetResultApi_1 = require("./GetResultApi");
28
+ const GetTokenApi_1 = require("./GetTokenApi");
29
+ const requester_1 = require("./requester");
30
+ const SendAlimtalkApi_1 = require("./SendAlimtalkApi");
31
+ __exportStar(require("./GetResultApi"), exports);
32
+ __exportStar(require("./GetTokenApi"), exports);
33
+ __exportStar(require("./requester"), exports);
34
+ __exportStar(require("./SendAlimtalkApi"), exports);
35
+ class BiztalkApi {
36
+ constructor(biztalkReqiester, bsid, passwd) {
37
+ this.biztalkReqiester = biztalkReqiester;
38
+ this.bsid = bsid;
39
+ this.passwd = passwd;
40
+ this.tokenApi = new GetTokenApi_1.GetTokenApi(this.biztalkReqiester);
41
+ this.sendApi = new SendAlimtalkApi_1.SendAlimtalkApi(this.biztalkReqiester);
42
+ this.resultApi = new GetResultApi_1.GetResultApi(this.biztalkReqiester);
43
+ }
44
+ send(payload) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ if (payload.recipient.startsWith("09")) {
47
+ return;
48
+ }
49
+ const data = { bsid: this.bsid, passwd: this.passwd };
50
+ const token = yield this.tokenApi.fetch(data);
51
+ this.biztalkReqiester.token.set(token);
52
+ yield this.sendApi.send(payload);
53
+ yield this.resultApi.fetch();
54
+ });
55
+ }
56
+ }
57
+ exports.BiztalkApi = BiztalkApi;
58
+ function createBiztalkApi(bsid, passwd, senderKey) {
59
+ const requester = (0, requester_1.createBiztalkRequester)(senderKey);
60
+ const api = new BiztalkApi(requester, bsid, passwd);
61
+ return api;
62
+ }
63
+ exports.createBiztalkApi = createBiztalkApi;
@@ -0,0 +1,13 @@
1
+ import { AxiosInstance } from "axios";
2
+ export interface BiztalkRequester extends AxiosInstance {
3
+ token: Token;
4
+ }
5
+ export declare function createBiztalkRequester(senderKey: string): BiztalkRequester;
6
+ export declare function createBiztalkBypassRequester(bypassUrl: string, senderKey: string): BiztalkRequester;
7
+ export declare function applyTokenInterceptors(clinet?: AxiosInstance): BiztalkRequester;
8
+ declare class Token {
9
+ private token;
10
+ get(): string | undefined;
11
+ set(token: string): void;
12
+ }
13
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.applyTokenInterceptors = exports.createBiztalkBypassRequester = exports.createBiztalkRequester = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ function createBiztalkRequester(senderKey) {
9
+ const clinet = axios_1.default.create({
10
+ baseURL: "https://www.biztalk-api.com",
11
+ });
12
+ clinet.interceptors.request.use(function (config) {
13
+ config.data = Object.assign({ senderKey }, config.data);
14
+ return config;
15
+ });
16
+ return applyTokenInterceptors(clinet);
17
+ }
18
+ exports.createBiztalkRequester = createBiztalkRequester;
19
+ function createBiztalkBypassRequester(bypassUrl, senderKey) {
20
+ const clinet = axios_1.default.create({ baseURL: bypassUrl });
21
+ clinet.interceptors.request.use(function (config) {
22
+ config.data = {
23
+ url: `https://www.biztalk-api.com/${config.url}`,
24
+ data: Object.assign({ senderKey }, config.data),
25
+ headers: Object.assign({}, config.headers),
26
+ method: config.method,
27
+ };
28
+ config.url = bypassUrl;
29
+ config.method = "POST";
30
+ return config;
31
+ });
32
+ return applyTokenInterceptors(clinet);
33
+ }
34
+ exports.createBiztalkBypassRequester = createBiztalkBypassRequester;
35
+ function applyTokenInterceptors(clinet = axios_1.default) {
36
+ const token = new Token();
37
+ injectToken(clinet, token);
38
+ return Object.assign(clinet, { token });
39
+ }
40
+ exports.applyTokenInterceptors = applyTokenInterceptors;
41
+ class Token {
42
+ get() {
43
+ return this.token;
44
+ }
45
+ set(token) {
46
+ this.token = token;
47
+ }
48
+ }
49
+ function injectToken(requester, token) {
50
+ requester.interceptors.request.use(function (payload) {
51
+ const tokenValue = token.get();
52
+ if (tokenValue) {
53
+ payload.headers = Object.assign({ "bt-token": tokenValue }, payload.headers);
54
+ }
55
+ return payload;
56
+ });
57
+ }
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@boxfoxs/biztalk",
3
+ "version": "0.0.10",
4
+ "description": "biztalk api",
5
+ "types": "dist/index.d.ts",
6
+ "main": "dist/index.js",
7
+ "module": "dist/esm",
8
+ "scripts": {
9
+ "build": "rm -rf dist && tsc -p tsconfig.json && tsc -p tsconfig.esm.json",
10
+ "deploy": "yarn build && yarn publish --access=public"
11
+ },
12
+ "devDependencies": {
13
+ "typescript": "^4.6.2"
14
+ }
15
+ }
@@ -0,0 +1,10 @@
1
+ import { BiztalkRequester } from "./requester";
2
+
3
+ export class GetResultApi {
4
+ constructor(private readonly requester: BiztalkRequester) {}
5
+
6
+ async fetch() {
7
+ const res = await this.requester.get("/v2/kko/getResultAll");
8
+ return res.data;
9
+ }
10
+ }
@@ -0,0 +1,28 @@
1
+ import { BiztalkRequester } from "./requester";
2
+
3
+ interface Payload {
4
+ bsid: string;
5
+ passwd: string;
6
+ }
7
+
8
+ export class GetTokenApi {
9
+ constructor(private readonly requester: BiztalkRequester) {}
10
+
11
+ async fetch(data: Payload) {
12
+ const res = await this.requester.post<Response>("/v2/auth/getToken", data, {
13
+ headers: { "Content-Type": "application/json" },
14
+ });
15
+ if (res.data.responseCode != "1000") {
16
+ throw new GetTokenError(res.data.msg);
17
+ }
18
+ return res.data.token;
19
+ }
20
+ }
21
+
22
+ export class GetTokenError extends Error {}
23
+
24
+ interface Response {
25
+ responseCode: string;
26
+ token: string;
27
+ msg?: string;
28
+ }
@@ -0,0 +1,79 @@
1
+ import { BiztalkRequester } from "./requester";
2
+
3
+ export class SendAlimtalkApi {
4
+ constructor(private readonly requester: BiztalkRequester) {}
5
+
6
+ async send(data: SendAlimtalkPayload) {
7
+ const res = await this.requester.post<Response>(
8
+ "/v2/kko/sendAlimTalk",
9
+ { ...data, msgIdx: data.msgIdx.substring(0, 40) },
10
+ {
11
+ headers: { "Content-Type": "application/json" },
12
+ }
13
+ );
14
+ if (res.data.responseCode != "1000") {
15
+ throw new SendAlimtalkError(res.data.msg);
16
+ }
17
+ return res.data.token;
18
+ }
19
+ }
20
+
21
+ export class SendAlimtalkError extends Error {}
22
+
23
+ export interface SendAlimtalkPayload {
24
+ msgIdx: string;
25
+ countryCode: string;
26
+ resMethod: string;
27
+ tmpltCode: string;
28
+ message: string;
29
+ recipient: string;
30
+ appUserId?: string;
31
+ attach?: Attach;
32
+ supplement?: Supplement;
33
+ title?: string;
34
+ messageType?: "AT" | "AI";
35
+ orgCode?: string;
36
+ price?: string;
37
+ }
38
+
39
+ export interface Attach {
40
+ button?: {
41
+ name: string;
42
+ type: "AL" | "DS" | "WL" | "BK" | "MD" | "AC" | "BT" | "P1" | "P2" | "P3";
43
+ scheme_android?: string;
44
+ scheme_ios?: string;
45
+ url_mobile?: string;
46
+ url_pc?: string;
47
+ chat_extra?: string;
48
+ chat_event?: string;
49
+ plugin_id?: string;
50
+ oneclick_id?: string;
51
+ product_id?: string;
52
+ }[];
53
+ item_highlight?: {
54
+ title: string;
55
+ description?: string;
56
+ };
57
+ item?: {
58
+ list: { title: string; description: string }[];
59
+ summary: { title: string; description: string };
60
+ };
61
+ quick_reply?: {
62
+ name: string;
63
+ type: string;
64
+ scheme_android?: string;
65
+ scheme_ios?: string;
66
+ url_mobile?: string;
67
+ url_pc?: string;
68
+ chat_extra?: string;
69
+ chat_event?: string;
70
+ }[];
71
+ }
72
+
73
+ interface Supplement {}
74
+
75
+ interface Response {
76
+ responseCode: string;
77
+ token: string;
78
+ msg?: string;
79
+ }
package/src/index.ts ADDED
@@ -0,0 +1,42 @@
1
+ import { GetResultApi } from "./GetResultApi";
2
+ import { GetTokenApi } from "./GetTokenApi";
3
+ import { BiztalkRequester, createBiztalkRequester } from "./requester";
4
+ import { SendAlimtalkApi, SendAlimtalkPayload } from "./SendAlimtalkApi";
5
+
6
+ export * from "./GetResultApi";
7
+ export * from "./GetTokenApi";
8
+ export * from "./requester";
9
+ export * from "./SendAlimtalkApi";
10
+
11
+ export class BiztalkApi {
12
+ private tokenApi = new GetTokenApi(this.biztalkReqiester);
13
+ private sendApi = new SendAlimtalkApi(this.biztalkReqiester);
14
+ private resultApi = new GetResultApi(this.biztalkReqiester);
15
+
16
+ public constructor(
17
+ private readonly biztalkReqiester: BiztalkRequester,
18
+ private readonly bsid: string,
19
+ private readonly passwd: string
20
+ ) {}
21
+
22
+ async send(payload: SendAlimtalkPayload) {
23
+ if (payload.recipient.startsWith("09")) {
24
+ return;
25
+ }
26
+ const data = { bsid: this.bsid, passwd: this.passwd };
27
+ const token = await this.tokenApi.fetch(data);
28
+ this.biztalkReqiester.token.set(token);
29
+ await this.sendApi.send(payload);
30
+ await this.resultApi.fetch();
31
+ }
32
+ }
33
+
34
+ export function createBiztalkApi(
35
+ bsid: string,
36
+ passwd: string,
37
+ senderKey: string
38
+ ) {
39
+ const requester = createBiztalkRequester(senderKey);
40
+ const api = new BiztalkApi(requester, bsid, passwd);
41
+ return api;
42
+ }
@@ -0,0 +1,64 @@
1
+ import axios, { AxiosInstance, AxiosRequestConfig } from "axios";
2
+
3
+ export interface BiztalkRequester extends AxiosInstance {
4
+ token: Token;
5
+ }
6
+
7
+ export function createBiztalkRequester(senderKey: string) {
8
+ const clinet = axios.create({
9
+ baseURL: "https://www.biztalk-api.com",
10
+ });
11
+ clinet.interceptors.request.use(function (config: AxiosRequestConfig) {
12
+ config.data = { senderKey, ...config.data };
13
+ return config;
14
+ });
15
+ return applyTokenInterceptors(clinet);
16
+ }
17
+
18
+ export function createBiztalkBypassRequester(
19
+ bypassUrl: string,
20
+ senderKey: string
21
+ ) {
22
+ const clinet = axios.create({ baseURL: bypassUrl });
23
+ clinet.interceptors.request.use(function (config: AxiosRequestConfig) {
24
+ config.data = {
25
+ url: `https://www.biztalk-api.com/${config.url}`,
26
+ data: { senderKey, ...config.data },
27
+ headers: { ...config.headers },
28
+ method: config.method,
29
+ };
30
+ config.url = bypassUrl;
31
+ config.method = "POST";
32
+ return config;
33
+ });
34
+ return applyTokenInterceptors(clinet);
35
+ }
36
+
37
+ export function applyTokenInterceptors(
38
+ clinet: AxiosInstance = axios
39
+ ): BiztalkRequester {
40
+ const token = new Token();
41
+ injectToken(clinet, token);
42
+ return Object.assign(clinet, { token });
43
+ }
44
+
45
+ class Token {
46
+ private token: string | undefined;
47
+
48
+ get() {
49
+ return this.token;
50
+ }
51
+ set(token: string) {
52
+ this.token = token;
53
+ }
54
+ }
55
+
56
+ function injectToken(requester: AxiosInstance, token: Token) {
57
+ requester.interceptors.request.use(function (payload: AxiosRequestConfig) {
58
+ const tokenValue = token.get();
59
+ if (tokenValue) {
60
+ payload.headers = { "bt-token": tokenValue, ...payload.headers };
61
+ }
62
+ return payload;
63
+ });
64
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist/esm",
5
+ "module": "esnext"
6
+ }
7
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es6",
4
+ "declaration": true,
5
+ "outDir": "dist",
6
+ "skipLibCheck": true,
7
+ "module": "commonjs",
8
+ "moduleResolution": "node",
9
+ "noEmit": false,
10
+ "sourceMap": false,
11
+ "strict": true,
12
+ "allowJs": true,
13
+ "esModuleInterop": true,
14
+ "noImplicitAny": true,
15
+ "noUnusedLocals": true,
16
+ "baseUrl": ".",
17
+ "experimentalDecorators": true,
18
+ "jsx": "react",
19
+ "lib": ["dom", "dom.iterable", "esnext"]
20
+ },
21
+ "include": ["src"],
22
+ "exclude": ["**/__mocks__/*", "**/__tests__/*", "**/__test__/*"]
23
+ }