UNPKG

@tnwx/commons

Version:

TTNWX 微信系开发脚手架之公共模块

78 lines 3.28 kB
"use strict"; /** * @author Javen * @copyright javendev@126.com * @description 获取api_ticket */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const util = require("util"); const accesstoken_1 = require("@tnwx/accesstoken"); const kits_1 = require("@tnwx/kits"); const JsTicket_1 = require("../entity/JsTicket"); class JsTicketApi { /** * 获取api_ticket * @param type * @param accessToken api_authorizer_token */ static getTicket(type, accessToken) { return __awaiter(this, void 0, void 0, function* () { let appId = accesstoken_1.ApiConfigKit.getApiConfig.getAppId; let key = appId + ':' + type; // 从缓存中获取 let cache = accesstoken_1.ApiConfigKit.getCache; let jsTicketJson = yield cache.get(key); const isAvailable = this.isAvailable(jsTicketJson); if (jsTicketJson && isAvailable) { if (accesstoken_1.ApiConfigKit.isDevMode()) { console.debug('缓存中获取api_ticket...'); } return new JsTicket_1.JsTicket(jsTicketJson); } // 通过接口获取 if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.getTicketUrl, accessToken.getAccessToken, type); let data = yield kits_1.HttpKit.getHttpDelegate.httpGet(url); if (data) { data = JSON.stringify(data); let jsTicket = new JsTicket_1.JsTicket(data); let cache = accesstoken_1.ApiConfigKit.getCache; cache.set(key, jsTicket.getCacheJson); if (accesstoken_1.ApiConfigKit.isDevMode()) { console.debug('通过接口获取api_ticket...'); } return jsTicket; } }); } /** * 检测jsTicket是否有效 * @param jsTicketJson */ static isAvailable(jsTicketJson) { if (!jsTicketJson) return false; const ticket = JSON.parse(jsTicketJson); if (!ticket.expired_time) return false; if (ticket.errcode) return false; if (ticket.expired_time < new Date().getTime()) return false; return ticket.access_token != null; } } exports.JsTicketApi = JsTicketApi; JsTicketApi.getTicketUrl = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=%s'; //# sourceMappingURL=JsTicketApi.js.map