@tnwx/commons
Version:
TTNWX 微信系开发脚手架之公共模块
78 lines • 3.28 kB
JavaScript
;
/**
* @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