helper.js 1.55 KB
import request from "./request";

export default class Helper {
  static getKey() {
    return parseInt(process.env.VUE_APP_API_KEY);
  }

  static getSecret() {
    return process.env.VUE_APP_API_SECRET;
  }

  static getExpire() {
    return parseInt(process.env.VUE_APP_API_EXPIRETIME);
  }

  static getUrlKey(name) {
    return (
      decodeURIComponent(
        (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
          location.href
        ) || [, ""])[1].replace(/\+/g, "%20")
      ) || null
    );
  }

  static getToken() {
    return this.getUrlKey("token");
  }

  static getSignature(userID) {
    const generator = new window.LibGenerateTestUserSig(
      this.getKey(),
      this.getSecret(),
      this.getExpire()
    );
    return generator.genTestUserSig(userID);
  }

  /**
   *
   * @returns {Promise<never>|Promise<{sign, id}>}
   */
  static verifyToken() {
    return request.get("auth").then((res) => {
      const { esm_id } = res.data;
      return Promise.resolve({ id: esm_id, sign: this.getSignature(esm_id) });
    });
  }

  static contactList(params = {}) {
    return request.get("im/contacts", { params });
  }

  static groupList(params = {}) {
    return request.get("im/groups", { params });
  }

  static groupMemberList(group, params = {}) {
    return request.get(`im/groups/${group}/members`, { params });
  }

  static groupMemberDelete(group, member) {
    return request.delete(`im/groups/${group}/members/${member}`);
  }

  static joinGroup(id, member) {
    return request.post(`im/groups/${id}/members`, { member });
  }
}