UNPKG

buzzk

Version:

뿌지직 (BUZZK) - 치지직(CHZZK) 챗봇을 더욱 쉽게 개발할 수 있도록 돕는 비공식 라이브러리.

102 lines (81 loc) 2.59 kB
const { USER, CLIENT } = require("./tool.js"); const { AUTH } = require("./val.js"); const channel = require("./channel.js"); class chzzkToken { constructor(access, refresh, expireIn) { this.access = access; this.refresh = refresh; this.expireIn = expireIn; } } /** * @typedef {Object} chzzkChannel * @property {string} channelID * @property {string} name * @property {string} follower * @property {string} imageURL */ /** * @typedef {Object} chzzkTokenData * @property {string} access * @property {string} refresh * @property {string} expireIn */ /** * @param {string} code * @param {string} state * @returns {Promise<chzzkTokenData>} */ async function get (code, state) { return new Promise(async (resolve, reject) => { let options = { grantType: "authorization_code", clientId: AUTH.id, clientSecret: AUTH.secret, code: code, state: state } let oauthGet = await CLIENT.post("auth/v1/token", options); if (oauthGet.code != 200) return resolve(null); oauthGet = oauthGet.content; let oauthRes = new chzzkToken(oauthGet.accessToken, oauthGet.refreshToken, oauthGet.expiresIn); return resolve(oauthRes); }); } /** * @param {string} refreshToken * @returns {Promise<chzzkTokenData>} */ async function refresh (refreshToken) { return new Promise(async (resolve, reject) => { let options = { grantType: "refresh_token", clientId: AUTH.id, clientSecret: AUTH.secret, refreshToken: refreshToken, } let oauthGet = await CLIENT.post("auth/v1/token", options); if (oauthGet.code != 200) return resolve(null); oauthGet = oauthGet.content; let oauthRes = new chzzkToken(oauthGet.accessToken, oauthGet.refreshToken, oauthGet.expiresIn); return resolve(oauthRes); }); } /** * @param {string} accessToken * @returns {Promise<chzzkChannel>} */ async function resolve (accessToken) { return new Promise(async (resolve, reject) => { let oauthGet = await USER.get(accessToken, "open/v1/users/me"); if (oauthGet.code != 200) return resolve(null); oauthGet = oauthGet.content; let oauthChannel = await channel.get(oauthGet.channelId); return resolve(oauthChannel); }); } module.exports = { get: get, refresh: refresh, resolve: resolve }