UNPKG

yimultiscreenserver-sdk-web

Version:

YiMultiScreenServer SDK for Web

327 lines 21.2 kB
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