138 lines
3.4 KiB
TypeScript

import {
ProtocolRequest,
ProtocolResponse,
ProtocolEncoder,
PacketBody,
ProtocolDecoder,
ProtocolMessage,
PacketBodyValue
} from '@ucap-webmessenger/protocol';
import {
CallerType,
CallMode,
CallAlarmType,
CallForwardType
} from '@ucap-webmessenger/core';
// tslint:disable-next-line: no-empty-interface
export interface CallUpdateRequest extends ProtocolRequest {
// 0 IPPhoneYN(s)
useIpPhone: boolean;
// 1 CallerType(s)
callerType: CallerType;
// 2 CallMode(s)
callMode: CallMode;
// 3 PairingYN(s)
usePairing: boolean;
// 4 CallAlarmYN(s)
useCallAlarm: boolean;
// 5 CallAlarmType(s)
callAlarmType: CallAlarmType;
// 6 CallForwardType(s)
callForwardType: CallForwardType;
// 7 대표착신번호(s)
representativeCalledNumber: string;
// 8 착신번호(s)1
calledNumber1: string;
// 9 착신번호(s)2
calledNumber2: string;
// 10 착신번호(s)3
calledNumber3: string;
}
export interface CallUpdateResponse extends ProtocolResponse {
// 0 IPPhoneYN(s)
useIpPhone?: boolean;
// 1 CallerType(s)
callerType?: CallerType;
// 2 CallMode(s)
callMode?: CallMode;
// 3 PairingYN(s)
usePairing?: boolean;
// 4 CallAlarmYN(s)
useCallAlarm?: boolean;
// 5 CallAlarmType(s)
callAlarmType?: CallAlarmType;
// 6 CallForwardType(s)
callForwardType?: CallForwardType;
// 7 대표착신번호(s)
representativeCalledNumber?: string;
// 8 착신번호(s)1
calledNumber1?: string;
// 9 착신번호(s)2
calledNumber2?: string;
// 10 착신번호(s)3
calledNumber3?: string;
}
export const encodeCallUpdate: ProtocolEncoder<CallUpdateRequest> = (
req: CallUpdateRequest
) => {
const bodyList: PacketBody[] = [];
bodyList.push({
type: PacketBodyValue.String,
value: req.useIpPhone ? 'Y' : 'N'
});
bodyList.push({
type: PacketBodyValue.String,
value: req.callerType
});
bodyList.push({
type: PacketBodyValue.String,
value: req.callMode
});
bodyList.push({
type: PacketBodyValue.String,
value: req.usePairing ? 'Y' : 'N'
});
bodyList.push({
type: PacketBodyValue.String,
value: req.useCallAlarm ? 'Y' : 'N'
});
bodyList.push({
type: PacketBodyValue.String,
value: req.callAlarmType
});
bodyList.push({
type: PacketBodyValue.String,
value: req.callForwardType
});
bodyList.push({
type: PacketBodyValue.String,
value: req.representativeCalledNumber
});
bodyList.push({
type: PacketBodyValue.String,
value: req.calledNumber1
});
bodyList.push({
type: PacketBodyValue.String,
value: req.calledNumber2
});
bodyList.push({
type: PacketBodyValue.String,
value: req.calledNumber3
});
return bodyList;
};
export const decodeCallUpdate: ProtocolDecoder<CallUpdateResponse> = (
message: ProtocolMessage
) => {
return {
useIpPhone: message.bodyList[0] === 'Y' ? true : false,
callerType: message.bodyList[1] as CallerType,
callMode: message.bodyList[2] as CallMode,
usePairing: message.bodyList[3] === 'Y' ? true : false,
useCallAlarm: message.bodyList[4] === 'Y' ? true : false,
callAlarmType: message.bodyList[5] as CallAlarmType,
callForwardType: message.bodyList[6] as CallForwardType,
representativeCalledNumber: message.bodyList[7],
calledNumber1: message.bodyList[8],
calledNumber2: message.bodyList[9],
calledNumber3: message.bodyList[10]
} as CallUpdateResponse;
};