From 38de6d24e143c3aa5610b7fd236db2de1c7bd6cd Mon Sep 17 00:00:00 2001 From: Christos Panagiotakopoulos Date: Fri, 19 Mar 2021 13:30:12 +0200 Subject: [PATCH] Viber-adapter ongoing development --- packages/viber-adapter/lib/api/requests.ts | 26 +++++++++++++++++++ .../viber-adapter/lib/api/viberRequest.ts | 20 ++++++++++++++ packages/viber-adapter/lib/interfaces/api.ts | 25 ++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 packages/viber-adapter/lib/api/requests.ts create mode 100644 packages/viber-adapter/lib/api/viberRequest.ts create mode 100644 packages/viber-adapter/lib/interfaces/api.ts diff --git a/packages/viber-adapter/lib/api/requests.ts b/packages/viber-adapter/lib/api/requests.ts new file mode 100644 index 0000000..ff4ec37 --- /dev/null +++ b/packages/viber-adapter/lib/api/requests.ts @@ -0,0 +1,26 @@ +import { + IViberSendMessageResult, + IViberSetWebhook, + IViberSetWebhookResult +} from '../interfaces/api'; +import viberRequest from './viberRequest'; + +export function setWebhook(webhookUrl: string, authToken: string): Promise { + const body: IViberSetWebhook = { + url: webhookUrl + }; + return viberRequest('set_webhook', body, authToken) as Promise; +} + +export function sendMessage( + receiver: string, + messageBody: Record, + authToken: string +): Promise { + const body = { + receiver, + ...messageBody + }; + + return viberRequest('send_message', body, authToken) as Promise; +} diff --git a/packages/viber-adapter/lib/api/viberRequest.ts b/packages/viber-adapter/lib/api/viberRequest.ts new file mode 100644 index 0000000..4fe8a72 --- /dev/null +++ b/packages/viber-adapter/lib/api/viberRequest.ts @@ -0,0 +1,20 @@ +import fetch from 'node-fetch'; + +const viberUrl = 'https://chatapi.viber.com/pa/'; + +export default async function viberRequest( + path: string, + data: Record, + authToken: string +): Promise { + const res = await fetch(viberUrl + path, { + method: 'POST', + body: JSON.stringify(data), + headers: { + 'X-Viber-Auth-Token': authToken + } + }); + + const response = await res.json(); + return response; +} diff --git a/packages/viber-adapter/lib/interfaces/api.ts b/packages/viber-adapter/lib/interfaces/api.ts new file mode 100644 index 0000000..da3c6db --- /dev/null +++ b/packages/viber-adapter/lib/interfaces/api.ts @@ -0,0 +1,25 @@ +import { EventType } from './webhook'; + +export interface IViberSetWebhook { + url: string; + event_types?: EventType[]; + send_name?: boolean; + send_photo?: boolean; +} + +export interface IViberSetWebhookResult { + status: number; + status_message: + | 'ok' + | 'invalidUrl' + | 'invalidAuthToken' + | 'badData' + | 'missingData' + | 'failure'; +} + +export interface IViberSendMessageResult { + status: number; + status_message?: string; + message_token: string; +}