254 lines
6.3 KiB
TypeScript
Raw Normal View History

2019-09-18 15:02:21 +09:00
import { Injectable } from '@angular/core';
2019-09-25 14:06:26 +09:00
import { ProtocolService } from '@ucap-webmessenger/protocol';
import { Observable } from 'rxjs';
import { take, map, takeWhile } from 'rxjs/operators';
2019-09-25 14:06:26 +09:00
import {
AuthRequest,
AuthResponse,
encodeAuth,
decodeAuth
2019-10-07 10:08:14 +09:00
} from '../protocols/auth';
2019-09-25 14:06:26 +09:00
import {
SVC_TYPE_QUERY_DATA,
SSVC_TYPE_QUERY_AUTH_REQ,
SSVC_TYPE_QUERY_DEPT_REQ,
SSVC_TYPE_QUERY_DEPT_RES,
SSVC_TYPE_QUERY_DEPT_DATA,
SSVC_TYPE_QUERY_DEPT_USER_RES,
SSVC_TYPE_QUERY_DEPT_USER_DATA,
2019-09-26 17:13:01 +09:00
SSVC_TYPE_QUERY_DEPT_USER_REQ,
SSVC_TYPE_QUERY_USER_SEQ_REQ,
SSVC_TYPE_QUERY_USER_SEQ_RES,
SSVC_TYPE_QUERY_USER_SEQ_DATA,
SSVC_TYPE_QUERY_USER_SEQ_DATA2,
SSVC_TYPE_QUERY_USER_ID_REQ,
SSVC_TYPE_QUERY_USER_ID_RES,
SSVC_TYPE_QUERY_USER_ID_DATA,
SSVC_TYPE_QUERY_USER_BY_DN_REQ,
SSVC_TYPE_QUERY_USER_BY_DN_RES,
SSVC_TYPE_QUERY_USER_BY_DN_DATA,
SSVC_TYPE_QUERY_DATA_USER_REQ,
SSVC_TYPE_QUERY_EXT_DATA_USER_REQ,
SSVC_TYPE_QUERY_DEPT_USER2_REQ,
SSVC_TYPE_QUERY_DEPT_USER2_DATA,
SSVC_TYPE_QUERY_DEPT_USER2_RES
2019-09-25 14:06:26 +09:00
} from '../types/service';
import {
DeptRequest,
DeptResponse,
encodeDept,
decodeDept,
decodeDeptData,
DeptData
2019-10-07 10:08:14 +09:00
} from '../protocols/dept';
import {
encodeDeptUser,
decodeDeptUser,
decodeDeptUserData,
DeptUserRequest,
DeptUserData,
DeptUserResponse
2019-10-07 10:08:14 +09:00
} from '../protocols/dept-user';
2019-09-26 17:13:01 +09:00
import {
UserSeqData,
UserSeqData2,
encodeUserSeq,
decodeUserSeqData,
decodeUserSeqData2,
UserSeqRequest
2019-10-07 10:08:14 +09:00
} from '../protocols/user-seq';
2019-09-26 17:13:01 +09:00
import {
UserIdRequest,
UserIdResponse,
UserIdData,
encodeUserId,
decodeUserId,
decodeUserIdData
2019-10-07 10:08:14 +09:00
} from '../protocols/user-id';
2019-09-26 17:13:01 +09:00
import {
UserDnRequest,
UserDnResponse,
UserDnData,
encodeUserDn,
decodeUserDnData,
decodeUserDn
2019-10-07 10:08:14 +09:00
} from '../protocols/user-dn';
2019-09-26 17:13:01 +09:00
import {
DataUserRequest,
DataUserResponse,
encodeDataUser,
decodeDataUser
2019-10-07 10:08:14 +09:00
} from '../protocols/data-user';
2019-09-26 17:13:01 +09:00
import {
DataUserExtRequest,
DataUserExtResponse,
encodeDataUserExt,
decodeDataUserExt
2019-10-07 10:08:14 +09:00
} from '../protocols/data-user-ext';
2019-09-18 15:02:21 +09:00
@Injectable({
providedIn: 'root'
})
export class QueryProtocolService {
2019-09-25 14:06:26 +09:00
constructor(private protocolService: ProtocolService) {}
public auth(req: AuthRequest): Observable<AuthResponse> {
return this.protocolService
.call(SVC_TYPE_QUERY_DATA, SSVC_TYPE_QUERY_AUTH_REQ, ...encodeAuth(req))
.pipe(
take(1),
map(res => decodeAuth(res))
);
}
public dept(req: DeptRequest): Observable<DeptResponse | DeptData> {
return this.protocolService
.call(SVC_TYPE_QUERY_DATA, SSVC_TYPE_QUERY_DEPT_REQ, ...encodeDept(req))
.pipe(
takeWhile(res => SSVC_TYPE_QUERY_DEPT_RES !== res.subServiceType, true),
map(res => {
if (SSVC_TYPE_QUERY_DEPT_DATA === res.subServiceType) {
2019-10-10 12:14:01 +09:00
return decodeDeptData(res);
}
2019-10-10 12:14:01 +09:00
return decodeDept(res);
})
);
}
public deptUser(
req: DeptUserRequest
): Observable<DeptUserResponse | DeptUserData> {
return this.protocolService
.call(
SVC_TYPE_QUERY_DATA,
SSVC_TYPE_QUERY_DEPT_USER_REQ,
...encodeDeptUser(req)
)
.pipe(
takeWhile(
res => SSVC_TYPE_QUERY_DEPT_USER_RES !== res.subServiceType,
true
),
map(res => {
if (SSVC_TYPE_QUERY_DEPT_USER_DATA === res.subServiceType) {
2019-10-10 12:14:01 +09:00
return decodeDeptUserData(res);
}
2019-10-10 12:14:01 +09:00
return decodeDeptUser(res);
})
);
}
2019-09-26 17:13:01 +09:00
public deptUser2(
req: DeptUserRequest
): Observable<DeptUserResponse | DeptUserData> {
return this.protocolService
.call(
SVC_TYPE_QUERY_DATA,
SSVC_TYPE_QUERY_DEPT_USER2_REQ,
...encodeDeptUser(req)
)
.pipe(
takeWhile(
res => SSVC_TYPE_QUERY_DEPT_USER2_RES !== res.subServiceType,
true
),
map(res => {
if (SSVC_TYPE_QUERY_DEPT_USER2_DATA === res.subServiceType) {
2019-10-10 12:14:01 +09:00
return decodeDeptUserData(res);
2019-09-26 17:13:01 +09:00
}
2019-10-10 12:14:01 +09:00
return decodeDeptUser(res);
2019-09-26 17:13:01 +09:00
})
);
}
public userSeq(req: UserSeqRequest): Observable<UserSeqData | UserSeqData2> {
return this.protocolService
.call(
SVC_TYPE_QUERY_DATA,
SSVC_TYPE_QUERY_USER_SEQ_REQ,
...encodeUserSeq(req)
)
.pipe(
takeWhile(
res => SSVC_TYPE_QUERY_USER_SEQ_RES !== res.subServiceType,
true
),
map(res => {
if (SSVC_TYPE_QUERY_USER_SEQ_DATA === res.subServiceType) {
2019-10-10 12:14:01 +09:00
return decodeUserSeqData(res);
2019-09-26 17:13:01 +09:00
} else if (SSVC_TYPE_QUERY_USER_SEQ_DATA2 === res.subServiceType) {
2019-10-10 12:14:01 +09:00
return decodeUserSeqData2(res);
2019-09-26 17:13:01 +09:00
}
})
);
}
public userId(req: UserIdRequest): Observable<UserIdResponse | UserIdData> {
return this.protocolService
.call(
SVC_TYPE_QUERY_DATA,
SSVC_TYPE_QUERY_USER_ID_REQ,
...encodeUserId(req)
)
.pipe(
takeWhile(
res => SSVC_TYPE_QUERY_USER_ID_RES !== res.subServiceType,
true
),
map(res => {
if (SSVC_TYPE_QUERY_USER_ID_DATA === res.subServiceType) {
2019-10-10 12:14:01 +09:00
return decodeUserIdData(res);
2019-09-26 17:13:01 +09:00
}
2019-10-10 12:14:01 +09:00
return decodeUserId(res);
2019-09-26 17:13:01 +09:00
})
);
}
public userDn(req: UserDnRequest): Observable<UserDnResponse | UserDnData> {
return this.protocolService
.call(
SVC_TYPE_QUERY_DATA,
SSVC_TYPE_QUERY_USER_BY_DN_REQ,
...encodeUserDn(req)
)
.pipe(
takeWhile(
res => SSVC_TYPE_QUERY_USER_BY_DN_RES !== res.subServiceType,
true
),
map(res => {
if (SSVC_TYPE_QUERY_USER_BY_DN_DATA === res.subServiceType) {
2019-10-10 12:14:01 +09:00
return decodeUserDnData(res);
2019-09-26 17:13:01 +09:00
}
2019-10-10 12:14:01 +09:00
return decodeUserDn(res);
2019-09-26 17:13:01 +09:00
})
);
}
public dataUser(req: DataUserRequest): Observable<DataUserResponse> {
return this.protocolService
.call(
SVC_TYPE_QUERY_DATA,
SSVC_TYPE_QUERY_DATA_USER_REQ,
...encodeDataUser(req)
)
.pipe(
take(1),
map(res => decodeDataUser(res))
);
}
public dataUserExt(req: DataUserExtRequest): Observable<DataUserExtResponse> {
return this.protocolService
.call(
SVC_TYPE_QUERY_DATA,
SSVC_TYPE_QUERY_EXT_DATA_USER_REQ,
...encodeDataUserExt(req)
)
.pipe(
take(1),
map(res => decodeDataUserExt(res))
);
}
2019-09-18 15:02:21 +09:00
}