dm-web-react
Version:
The DM web client with React.
153 lines (143 loc) • 6.53 kB
text/typescript
import { DefineService } from "./defineService";
import { CdnSliceConfigDto } from "../modules/bond/models/dto/cdnSliceConfigDto";
import { plainToClass } from "class-transformer";
import { RestResponse } from "../models/dto/restResponse";
import { BinlogWrapperDto } from "../modules/bond/models/dto/binlogWrapperDto";
import { ObjectUtils, StringUtils } from "ts-commons";
import { VCardDto } from "../models/dto/vcardDto";
import { DMLiteConfigDto } from "../models/dto/dmliteConfigDto";
export class HttpService {
private static instance = new HttpService();
public static get Instance() {
return this.instance;
}
private readonly apiHost: string;
constructor() {
this.apiHost = DefineService.Instance.getApiUrl();
}
// POST /api/quoteDonePrice/cdn/brokeConfig 经纪商最优报价CDN配置
public async getBrokeConfig(userId: string, position: number): Promise<CdnSliceConfigDto> {
try {
const response = await fetch(`${this.apiHost}/bond-web/api/quoteDonePrice/cdn/brokeConfig?position=${position}`, {
method: "POST",
headers: {
userId: userId,
},
});
const json = await response.json();
const result = plainToClass<RestResponse<any>, object>(RestResponse, json);
if (result.code === "0" && result.data) {
const config = plainToClass<CdnSliceConfigDto, object>(CdnSliceConfigDto, result.datas || result.data);
return new Promise<CdnSliceConfigDto>(resolve => resolve(config));
} else {
return new Promise<CdnSliceConfigDto>((resolve, reject) => reject(result.message));
}
} catch (e) {
return new Promise<CdnSliceConfigDto>((resolve, reject) => reject(e));
}
}
// POST /api/quoteDonePrice/cdn/sliceConfig 基础信息CDN配置
public async getSliceConfig(userId: string, position: number): Promise<CdnSliceConfigDto> {
try {
const response = await fetch(`${this.apiHost}/bond-web/api/quoteDonePrice/cdn/sliceConfig?position=${position}`, {
method: "POST",
headers: {
userId: userId,
},
});
const json = await response.json();
const result = plainToClass<RestResponse<any>, object>(RestResponse, json);
if (result.code === "0" && result.data) {
const config = plainToClass<CdnSliceConfigDto, object>(CdnSliceConfigDto, result.data);
return new Promise<CdnSliceConfigDto>(resolve => resolve(config));
} else {
return new Promise<CdnSliceConfigDto>((resolve, reject) => reject(result.message));
}
} catch (e) {
return new Promise<CdnSliceConfigDto>((resolve, reject) => reject(e));
}
}
public async getBondInfoBinlogs(userId: string, position: number, limit: number): Promise<BinlogWrapperDto> {
try {
const response = await fetch(`${this.apiHost}/bond-web/api/quoteDonePrice/binlog/basicList?position=${position}&limit=${limit}`, {
method: "POST",
headers: {
userId: userId,
},
});
const json = await response.json();
const result = plainToClass<RestResponse<any>, object>(RestResponse, json);
if (result.code === "0") {
if (ObjectUtils.isNullOrUndefined(result.data) || StringUtils.isBlank(ObjectUtils.toSafeString(result.data))) {
const config = new BinlogWrapperDto();
config.count = 0;
config.binlogs = [];
return new Promise<BinlogWrapperDto>(resolve => resolve(config));
}
const config = plainToClass<BinlogWrapperDto, object>(BinlogWrapperDto, result.data);
return new Promise<BinlogWrapperDto>(resolve => resolve(config));
} else {
return new Promise<BinlogWrapperDto>((resolve, reject) => reject(result.message));
}
} catch (e) {
return new Promise<BinlogWrapperDto>((resolve, reject) => reject(e));
}
}
public async getBrokerMarketBestPriceBinlogs(userId: string, position: number, limit: number): Promise<BinlogWrapperDto> {
try {
const response = await fetch(`${this.apiHost}/bond-web/api/quoteDonePrice/binlog/bestPrive/brokeList?position=${position}&limit=${limit}`, {
method: "POST",
headers: {
userId: userId,
},
});
const json = await response.json();
const result = plainToClass<RestResponse<any>, object>(RestResponse, json);
if (result.code === "0") {
if (ObjectUtils.isNullOrUndefined(result.data) || StringUtils.isBlank(ObjectUtils.toSafeString(result.data))) {
const config = new BinlogWrapperDto();
config.count = 0;
config.binlogs = [];
return new Promise<BinlogWrapperDto>(resolve => resolve(config));
}
const config = plainToClass<BinlogWrapperDto, object>(BinlogWrapperDto, result.data);
return new Promise<BinlogWrapperDto>(resolve => resolve(config));
} else {
return new Promise<BinlogWrapperDto>((resolve, reject) => reject(result.message));
}
} catch (e) {
return new Promise<BinlogWrapperDto>((resolve, reject) => reject(e));
}
}
public async getVcard(): Promise<VCardDto> {
try {
const response = await fetch(`${this.apiHost}/bond-web/api/bond/gateway/dmVcardHandler/getVCard`, {
method: "POST",
credentials: "include",
});
const json = await response.json();
const result = plainToClass<RestResponse<any>, object>(RestResponse, json);
if (result.code === "0") {
const config = plainToClass<VCardDto, object>(VCardDto, result.datas || result.data);
return new Promise<VCardDto>(resolve => resolve(config));
} else {
return new Promise<VCardDto>((resolve, reject) => reject(result.message));
}
} catch (e) {
return new Promise<VCardDto>((resolve, reject) => reject(e));
}
}
public async getDMLiteConfig(): Promise<DMLiteConfigDto> {
try {
const response = await fetch(`${this.apiHost}/dashboard/dmlitePreloading/config`, {
method: "GET",
credentials: "include",
});
const json = await response.json();
const result = plainToClass<DMLiteConfigDto, object>(DMLiteConfigDto, json);
return new Promise<DMLiteConfigDto>(resolve => resolve(result));
} catch (e) {
return new Promise<DMLiteConfigDto>((resolve, reject) => reject(e));
}
}
}