HttpUtils.ets 3.47 KB
import { SpConstants } from 'wdConstant/Index';
import { DeviceUtil, Logger, SPHelper, StringUtils } from 'wdKit/Index';
import { HttpRequest } from '../http/HttpRequest';
import { http } from '@kit.NetworkKit';
import fs from '@ohos.file.fs';
import { BusinessError } from '@kit.BasicServicesKit';
import { JSON } from '@kit.ArkTS';

const TAG: string = '[HttpUtils]'

/**
 * http相关工具类,对外暴露
 */
export class HttpUtils {
  static getRefreshToken() {
    let refreshToken = SPHelper.default.getSync(SpConstants.USER_REFRESH_TOKEN, "")
    if (StringUtils.isNotEmpty(refreshToken)) {
      return refreshToken as string;
    }
    return '';
  }

  /**
   * 设备id,uuid
   */
  public static getDeviceId(): string {
    return DeviceUtil.clientId();
  }

  /**
   * 定位,城市code
   */
  public static getCityCode(): string {
    // 城市编码
    return SPHelper.default.getSync(SpConstants.LOCATION_CITY_CODE, '') as string
  }

  /**
   * 定位,省份code
   */
  public static getProvinceCode(): string {
    return SPHelper.default.getSync(SpConstants.LOCATION_PROVINCE_CODE, '') as string
  }

  /**
   * 定位,地区code
   */
  public static getDistrictCode(): string {
    let districtCode = SPHelper.default.getSync(SpConstants.LOCATION_DISTRICT_CODE, '') as string
    if (districtCode === '') {
      return districtCode
    }
    // 截取前6位,如返回310115114,需要310115 (上海浦东)
    return districtCode.substring(0, 6);
  }

  public static getImei(): string {
    return DeviceUtil.clientId();
  }

  public static getUserId(): string {
    return SPHelper.default.getSync(SpConstants.USER_ID, "") as string
  }

  public static getCreatorId(): string {
    return SPHelper.default.getSync(SpConstants.USER_CREATOR_ID, "") as string
  }

  public static getUserType(): string {
    return SPHelper.default.getSync(SpConstants.USER_Type, "") as string
  }

  static getUserToken(): string {
    return SPHelper.default.getSync(SpConstants.USER_JWT_TOKEN, "") as string
  }

  static getMpaasUtdid(): string {
    return SPHelper.default.getSync(SpConstants.USER_MPAASUTDID, "") as string
  }

  public static isLogin(): boolean {
    let token = HttpUtils.getUserToken()
    if (token == null || token == undefined || token.length <= 0) {
      return false
    }
    return true
  }

  static downloadUrlToPathWithout(url: string, toFilePath: string): Promise<boolean> {
    Logger.debug(TAG, "will donwload url:" + url + " ======> " + toFilePath);

    return new Promise((reslove, fail) => {

      let httpRequest = http.createHttp()
      httpRequest.request(url, (err, data) => {

        if (!err && data.responseCode == http.ResponseCode.OK) {
          let imgFile = fs.openSync(toFilePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
          let wroteLength = 0
          fs.write(imgFile.fd, data.result as ArrayBuffer).then((writeLen: number) => {
            Logger.debug(TAG, "write data to file succeed and size is:" + writeLen);
            wroteLength = writeLen
          }).catch((err: BusinessError) => {
            Logger.error(TAG, "write data to file failed with error message: " + err.message + ", error code: " + err.code);
          }).finally(() => {
            fs.closeSync(imgFile);
            httpRequest.destroy()

            reslove(wroteLength > 0)
          });
          return
        }

        Logger.error(TAG, "download failed " + JSON.stringify(err));
        httpRequest.destroy()
        fail("failed")
      });

    })
  }
}