UNPKG

@bestieapp/tiktok-marketing-api

Version:

Marketing API for TikTok

77 lines (76 loc) 2.66 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const form_data_1 = __importDefault(require("form-data")); const axios_1 = __importDefault(require("axios")); class TikTokApi { constructor(accessToken = null, debug = false) { this.accessToken = accessToken; this.debug = debug; TikTokApi.defaultApi = this; } static get VERSION() { return process.env.TIKTOK_VERSION || "v1.3"; } static get API() { return `https://business-api.tiktok.com/open_api/${TikTokApi.VERSION}`; } async call(method, path, body = {}, params = {}, headers = { "Content-Type": "application/json", }) { const reqParams = this.serializeParams(params); if (this.accessToken) { reqParams.access_token = this.accessToken; headers["Access-Token"] = this.accessToken; } const url = `${TikTokApi.API}/${path}/`; try { const response = await axios_1.default.request({ method, url, params: reqParams, headers, data: this.formatRequestBody(body), maxBodyLength: Infinity, maxContentLength: Infinity, }); if (this.debug) this.logResponse(method, url, body, response.data); return response.data; } catch (error) { if (this.debug) this.logError(method, url, body, error); throw error; } } formatRequestBody(body) { let reqBody; if (body instanceof form_data_1.default) { reqBody = body; } else if (Object.keys(body).length) reqBody = JSON.stringify(body); return reqBody; } serializeParams(params) { const serializedParams = {}; for (const key in params) { if (Array.isArray(params[key])) serializedParams[key] = JSON.stringify(params[key]); else serializedParams[key] = params[key]; } return serializedParams; } logResponse(method, url, body, response) { console.log(`200 ${method} ${url} ${JSON.stringify(body)}`); console.log(`Response: ${response ? JSON.stringify(response) : ""}`); } logError(method, url, body, response) { console.log(`${response.statusCode} ${method} ${url} ${JSON.stringify(body)}`); } } exports.default = TikTokApi;