yimultiscreenserver-sdk-web
Version:
YiMultiScreenServer SDK for Web
327 lines • 21.2 kB
JavaScript
import { ScreenOrientation } from '../../vo/report/ScreenOrientation';
import { CastSessionResponse } from './response/CastSessionResponse';
import { ConnectDisplayResponse } from './response/ConnectDisplayResponse';
import { EmptyResponse } from './response/EmptyResponse';
import { Result } from './response/Result';
import { JsonParser } from '../json/JsonParser';
import { SDKLog } from '../../util/SDKLog';
import { CastSlot } from '../../vo/report/CastSlot';
import { VerifyCodeResponse } from './response/VerifyCodeResponse';
import { LoginUserResponse } from './response/LoginUserResponse';
import { AccountBindDeviceResponse } from './response/AccountBindDeviceResponse';
import { AccountBindDeviceVO } from '../../vo/account/AccountBindDeviceVO';
import { Code } from './response/Code';
export class HttpRequestExecutor {
constructor() {
this.TAG = "HttpRequestExecutor";
this.httpConfig = null;
this.jsonParser = new JsonParser();
this.requesterImpl = null;
}
setHttpRequester(requesterImpl) {
this.requesterImpl = requesterImpl;
}
setHTTPConfig(config) {
this.httpConfig = config;
}
async connectDisplay(displayCode, controllerDevice) {
let requestParam = new Map();
requestParam.set("displayCode", displayCode + "");
requestParam.set("guid", controllerDevice.guid);
requestParam.set("controllerDeviceType", controllerDevice.controllerDeviceType);
requestParam.set("ip", controllerDevice.ip);
requestParam.set("gateway", controllerDevice.gateway);
requestParam.set("mask", controllerDevice.mask);
let ret = await this.post(this.httpConfig.getHost() + this.httpConfig.getApiConnectDevice(), this.jsonParser.mapToJson(requestParam));
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new ConnectDisplayResponse());
// 如果后端返回的json中code不是ok,那么response中data就为空,就不能直接对data做取值,直接返回构造的默认值。
if (Code.OK != temp.code) {
return result;
}
// displayDevice
result.data.displayReport.displayDevice.displayCode = temp.data.displayReport.displayDevice.displayCode;
result.data.displayReport.displayDevice.displayDeviceId = temp.data.displayReport.displayDevice.displayDeviceId;
result.data.displayReport.displayDevice.displayDeviceName = temp.data.displayReport.displayDevice.displayDeviceName;
result.data.displayReport.displayDevice.gateway = temp.data.displayReport.displayDevice.gateway;
result.data.displayReport.displayDevice.ip = temp.data.displayReport.displayDevice.ip;
result.data.displayReport.displayDevice.mask = temp.data.displayReport.displayDevice.mask;
result.data.displayReport.displayDevice.outIp = temp.data.displayReport.displayDevice.outIp;
// display support
result.data.displayReport.displaySupport.isSupportMirrorToDisplay = temp.data.displayReport.displaySupport.isSupportMirrorToDisplay;
result.data.displayReport.displaySupport.isSupportMirrorToController = temp.data.displayReport.displaySupport.isSupportMirrorToController;
result.data.displayReport.displaySupport.isSupportDisplayRemote = temp.data.displayReport.displaySupport.isSupportDisplayRemote;
result.data.displayReport.displaySupport.isSupportDisplayScreenCapture = temp.data.displayReport.displaySupport.isSupportDisplayScreenCapture;
result.data.displayReport.displaySupport.isSupportDisplayAppInstall = temp.data.displayReport.displaySupport.isSupportDisplayAppInstall;
result.data.displayReport.displaySupport.isSupportShareImageToDisplay = temp.data.displayReport.displaySupport.isSupportShareImageToDisplay;
result.data.displayReport.displaySupport.isSupportShareVideoToDisplay = temp.data.displayReport.displaySupport.isSupportShareVideoToDisplay;
result.data.displayReport.displaySupport.isSupportShareDocumentToDisplay = temp.data.displayReport.displaySupport.isSupportShareDocumentToDisplay;
result.data.displayReport.displaySupport.majorVersion = temp.data.displayReport.displaySupport.majorVersion;
result.data.displayReport.displaySupport.minorVersion = temp.data.displayReport.displaySupport.minorVersion;
// displayReport
result.data.displayReport.castSlots = temp.data.displayReport.castSlots.map((slot) => new CastSlot(slot.castType, slot.used, slot.max));
result.data.displayReport.isCastEnable = temp.data.displayReport.isCastEnable;
result.data.displayReport.isCastExclusive = temp.data.displayReport.isCastExclusive;
// isDisplayDeviceOnline 是后增字段,可能在已有的消息/http中不存在
if (temp.data.displayReport.isDisplayDeviceOnline !== undefined) {
result.data.displayReport.isDisplayDeviceOnline = temp.data.displayReport.isDisplayDeviceOnline;
}
else {
result.data.displayReport.isDisplayDeviceOnline = true;
}
;
// screenOrientation 是后增字段,可能在已有的消息/http中不存在
if (temp.data.displayReport.screenOrientation !== undefined) {
result.data.displayReport.screenOrientation = temp.data.displayReport.screenOrientation;
}
else {
result.data.displayReport.screenOrientation = ScreenOrientation.LANDSCAPE;
}
;
result.data.outIp = temp.data.outIp;
SDKLog.d(this.TAG, "connectDisplay result = " + result.toString());
return result;
}
async disconnectDisplay(displayCode, controllerDevice) {
let requestParam = new Map();
requestParam.set("displayCode", displayCode + "");
requestParam.set("guid", controllerDevice.guid);
let ret = await this.delete(this.httpConfig.getHost() + this.httpConfig.getApiConnectDevice(), this.jsonParser.mapToJson(requestParam));
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new EmptyResponse());
return result;
}
async createCastSession(displayCode, guid, castType, protocol, accessToken) {
let requestParam = new Map();
requestParam.set("displayCode", displayCode + "");
requestParam.set("guid", guid);
requestParam.set("castType", castType);
requestParam.set("protocol", protocol);
let ret = await this.post(this.httpConfig.getHost() + this.httpConfig.getApiCastSession(), this.jsonParser.mapToJson(requestParam), accessToken);
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new CastSessionResponse());
// 如果后端返回的json中code不是ok,那么response中data就为空,就不能直接对data做取值,直接返回构造的默认值。
if (Code.OK != temp.code) {
return result;
}
result.data.castSessionId = temp.data.castSessionId;
return result;
}
async destroyCastSession(castSessionId, reason) {
let requestParam = new Map();
requestParam.set("castSessionId", castSessionId + "");
if (reason) {
requestParam.set("reason", reason);
}
let ret = await this.delete(this.httpConfig.getHost() + this.httpConfig.getApiCastSession(), this.jsonParser.mapToJson(requestParam));
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new EmptyResponse());
return result;
}
async requireVerifyCode(phoneNumber) {
let requestParam = new Map();
requestParam.set("phoneNumber", phoneNumber);
let ret = await this.get(this.httpConfig.getHost() + this.httpConfig.getApiVerifyCode(), requestParam);
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new VerifyCodeResponse());
// 如果后端返回的json中code不是ok,那么response中data就为空,就不能直接对data做取值,直接返回构造的默认值。
if (Code.OK != temp.code) {
return result;
}
result.data.isSMSSuccessSend = temp.data.isSMSSuccessSend;
result.data.smsResMsg = temp.data.smsResMsg;
return result;
}
async login(phoneNumber, verifyCode, deviceType, guid, loginType) {
let requestParam = new Map();
requestParam.set("phoneNumber", phoneNumber);
requestParam.set("verifyCode", verifyCode);
requestParam.set("controllerDeviceType", deviceType);
requestParam.set("guid", guid);
requestParam.set("loginType", loginType);
let ret = await this.post(this.httpConfig.getHost() + this.httpConfig.getApiUser(), this.jsonParser.mapToJson(requestParam));
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new LoginUserResponse());
// 如果后端返回的json中code不是ok,那么response中data就为空,就不能直接对data做取值,直接返回构造的默认值。
if (Code.OK != temp.code) {
return result;
}
result.data.user = temp.data.user;
result.data.user.accessToken = temp.data.user.accessToken;
result.data.user.controllerDeviceType = temp.data.user.controllerDeviceType;
result.data.user.guid = temp.data.user.guid;
result.data.user.loginTime = temp.data.user.loginTime;
result.data.user.userId = temp.data.user.userId;
result.data.user.account.accountId = temp.data.user.account.accountId;
result.data.user.account.phoneNumber = temp.data.user.account.phoneNumber;
result.data.user.account.registerTime = temp.data.user.account.registerTime;
result.data.user.account.vipLevel = temp.data.user.account.vipLevel;
return result;
}
async refresh(guid, accessToken) {
let requestParam = new Map();
requestParam.set("guid", guid);
let ret = await this.update(this.httpConfig.getHost() + this.httpConfig.getApiUser(), this.jsonParser.mapToJson(requestParam), accessToken);
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new LoginUserResponse());
// 如果后端返回的json中code不是ok,那么response中data就为空,就不能直接对data做取值,直接返回构造的默认值。
if (Code.OK != temp.code) {
return result;
}
result.data.user = temp.data.user;
result.data.user.accessToken = temp.data.user.accessToken;
result.data.user.controllerDeviceType = temp.data.user.controllerDeviceType;
result.data.user.guid = temp.data.user.guid;
result.data.user.loginTime = temp.data.user.loginTime;
result.data.user.userId = temp.data.user.userId;
result.data.user.account.accountId = temp.data.user.account.accountId;
result.data.user.account.phoneNumber = temp.data.user.account.phoneNumber;
result.data.user.account.registerTime = temp.data.user.account.registerTime;
result.data.user.account.vipLevel = temp.data.user.account.vipLevel;
return result;
}
async logout(accessToken) {
let requestParam = new Map();
let ret = await this.delete(this.httpConfig.getHost() + this.httpConfig.getApiUser(), this.jsonParser.mapToJson(requestParam), accessToken);
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new EmptyResponse());
return result;
}
async unRegister(accessToken) {
let requestParam = new Map();
let ret = await this.delete(this.httpConfig.getHost() + this.httpConfig.getApiAccount(), this.jsonParser.mapToJson(requestParam), accessToken);
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new EmptyResponse());
return result;
}
async getAllBoundDevices(accessToken) {
let requestParam = new Map();
let ret = await this.get(this.httpConfig.getHost() + this.httpConfig.getApiBindDevice(), requestParam, accessToken);
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new AccountBindDeviceResponse());
// 如果后端返回的json中code不是ok,那么response中data就为空,就不能直接对data做取值,直接返回构造的默认值。
if (Code.OK != temp.code) {
return result;
}
temp.data.boundDisplayDevices.forEach(device => {
let accountBindDevice = new AccountBindDeviceVO();
accountBindDevice.accountId = device.accountId;
accountBindDevice.displayDeviceAlias = device.displayDeviceAlias;
accountBindDevice.displayDevice.displayCode = device.displayDevice.displayCode;
accountBindDevice.displayDevice.displayDeviceId = device.displayDevice.displayDeviceId;
accountBindDevice.displayDevice.displayDeviceName = device.displayDevice.displayDeviceName;
accountBindDevice.displayDevice.gateway = device.displayDevice.gateway;
accountBindDevice.displayDevice.ip = device.displayDevice.ip;
accountBindDevice.displayDevice.mask = device.displayDevice.mask;
accountBindDevice.displayDevice.outIp = device.displayDevice.outIp;
result.data.boundDisplayDevices.push(accountBindDevice);
});
return result;
}
async bindDisplay(displayDeviceId, alias, accessToken) {
let requestParam = new Map();
requestParam.set("displayDeviceId", displayDeviceId);
requestParam.set("displayDeviceAlias", alias);
let ret = await this.post(this.httpConfig.getHost() + this.httpConfig.getApiBindDevice(), this.jsonParser.mapToJson(requestParam), accessToken);
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new AccountBindDeviceResponse());
// 如果后端返回的json中code不是ok,那么response中data就为空,就不能直接对data做取值,直接返回构造的默认值。
if (Code.OK != temp.code) {
return result;
}
temp.data.boundDisplayDevices.forEach(device => {
let accountBindDevice = new AccountBindDeviceVO();
accountBindDevice.accountId = device.accountId;
accountBindDevice.displayDeviceAlias = device.displayDeviceAlias;
accountBindDevice.displayDevice.displayCode = device.displayDevice.displayCode;
accountBindDevice.displayDevice.displayDeviceId = device.displayDevice.displayDeviceId;
accountBindDevice.displayDevice.displayDeviceName = device.displayDevice.displayDeviceName;
accountBindDevice.displayDevice.gateway = device.displayDevice.gateway;
accountBindDevice.displayDevice.ip = device.displayDevice.ip;
accountBindDevice.displayDevice.mask = device.displayDevice.mask;
accountBindDevice.displayDevice.outIp = device.displayDevice.outIp;
result.data.boundDisplayDevices.push(accountBindDevice);
});
return result;
}
async updateBindDisplayAlias(displayDeviceId, alias, accessToken) {
let requestParam = new Map();
requestParam.set("displayDeviceId", displayDeviceId);
requestParam.set("displayDeviceAlias", alias);
let ret = await this.update(this.httpConfig.getHost() + this.httpConfig.getApiBindDevice(), this.jsonParser.mapToJson(requestParam), accessToken);
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new AccountBindDeviceResponse());
// 如果后端返回的json中code不是ok,那么response中data就为空,就不能直接对data做取值,直接返回构造的默认值。
if (Code.OK != temp.code) {
return result;
}
temp.data.boundDisplayDevices.forEach(device => {
let accountBindDevice = new AccountBindDeviceVO();
accountBindDevice.accountId = device.accountId;
accountBindDevice.displayDeviceAlias = device.displayDeviceAlias;
accountBindDevice.displayDevice.displayCode = device.displayDevice.displayCode;
accountBindDevice.displayDevice.displayDeviceId = device.displayDevice.displayDeviceId;
accountBindDevice.displayDevice.displayDeviceName = device.displayDevice.displayDeviceName;
accountBindDevice.displayDevice.gateway = device.displayDevice.gateway;
accountBindDevice.displayDevice.ip = device.displayDevice.ip;
accountBindDevice.displayDevice.mask = device.displayDevice.mask;
accountBindDevice.displayDevice.outIp = device.displayDevice.outIp;
result.data.boundDisplayDevices.push(accountBindDevice);
});
return result;
}
async unBindDisplay(displayDeviceId, accessToken) {
let requestParam = new Map();
requestParam.set("displayDeviceId", displayDeviceId);
let ret = await this.delete(this.httpConfig.getHost() + this.httpConfig.getApiBindDevice(), this.jsonParser.mapToJson(requestParam), accessToken);
// js的json到object转换,如果是复杂对象,会丢失类型信息,所以需要手动转换,否则无法正常使用转换后的对象中的方法。
let temp = this.jsonParser.fromJsonToHttpResult(ret);
let result = Result.create(temp.code, temp.msg, new EmptyResponse());
return result;
}
async get(url, data, token) {
SDKLog.d(this.TAG, "GET url: " + url);
if (null == this.requesterImpl) {
SDKLog.e(this.TAG, "requesterImpl is null");
return "";
}
return await this.requesterImpl.get(url, data, token);
}
async post(url, data, token) {
SDKLog.d(this.TAG, "POST url: " + url + "; data: " + data);
if (null == this.requesterImpl) {
SDKLog.e(this.TAG, "requesterImpl is null");
return "";
}
return await this.requesterImpl.post(url, data, token);
}
async delete(url, data, token) {
SDKLog.d(this.TAG, "DELETE url: " + url + "; data: " + data);
if (null == this.requesterImpl) {
SDKLog.e(this.TAG, "requesterImpl is null");
return "";
}
return await this.requesterImpl.delete(url, data, token);
}
async update(url, data, token) {
SDKLog.d(this.TAG, "UPDATE url: " + url + "; data: " + data);
if (null == this.requesterImpl) {
SDKLog.e(this.TAG, "requesterImpl is null");
return "";
}
return await this.requesterImpl.update(url, data, token);
}
}
//# sourceMappingURL=HttpRequestExecutor.js.map