UNPKG

@bestieapp/tiktok-marketing-api

Version:

Marketing API for TikTok

64 lines (63 loc) 2.27 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const crypto_1 = require("crypto"); const fs_1 = require("fs"); const object_1 = __importDefault(require("../object")); const types_1 = require("./types"); class TikTokVideo extends object_1.default { static get ENDPOINT() { return "file/video"; } async getVideosInfo(advertiserId, videoIds) { return this.get(`${TikTokVideo.ENDPOINT}/ad/info`, { video_ids: videoIds, advertiser_id: advertiserId, }); } async searchForVideos(advertiserId, options = {}) { return this.get(`${TikTokVideo.ENDPOINT}/ad/search`, { advertiser_id: advertiserId, ...options, }); } async uploadVideoByFile(filePath, request) { const hash = await this.createFileHash(filePath); return this.uploadVideo({ ...request, upload_type: types_1.UploadType.UPLOAD_BY_FILE, video_file: (0, fs_1.createReadStream)(filePath), video_signature: hash, }); } uploadVideo(request) { return this.formDataPost(this.formatEndpoint("ad/upload"), request); } createFileHash(filePath, algorithm = "md5") { // Algorithm depends on availability of OpenSSL on platform // Another algorithms: 'sha1', 'md5', 'sha256', 'sha512' ... return new Promise((resolve, reject) => { const shasum = (0, crypto_1.createHash)(algorithm); try { const stream = (0, fs_1.createReadStream)(filePath); stream.on("data", function (data) { shasum.update(data); }); // making digest stream.on("end", function () { const hash = shasum.digest("hex"); return resolve(hash); }); } catch (error) { return reject("calc fail"); } }); } formatEndpoint(endpoint) { return `${TikTokVideo.ENDPOINT}/${endpoint}`; } } exports.default = TikTokVideo;