67 lines
1.4 KiB
TypeScript

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { map, take } from 'rxjs/operators';
import { ProtocolService } from '@ucap-webmessenger/protocol';
import {
SVC_TYPE_BUDDY,
SSVC_TYPE_BUDDY_ADD_REQ,
SSVC_TYPE_BUDDY_DEL_REQ,
SSVC_TYPE_BUDDY_UPD_REQ
} from '../types/service';
import {
AddRequest,
encodeAdd,
decodeAdd,
AddResponse
} from '../protocols/add';
import {
DelRequest,
encodeDel,
decodeDel,
DelResponse
} from '../protocols/del';
import {
UpdateRequest,
decodeUpdate,
encodeUpdate,
UpdateResponse
} from '../protocols/update';
@Injectable({
providedIn: 'root'
})
export class BuddyProtocolService {
constructor(private protocolService: ProtocolService) {}
public add(req: AddRequest): Observable<AddResponse> {
return this.protocolService
.call(SVC_TYPE_BUDDY, SSVC_TYPE_BUDDY_ADD_REQ, ...encodeAdd(req))
.pipe(
take(1),
map(res => decodeAdd(res))
);
}
public del(req: DelRequest): Observable<DelResponse> {
return this.protocolService
.call(SVC_TYPE_BUDDY, SSVC_TYPE_BUDDY_DEL_REQ, ...encodeDel(req))
.pipe(
take(1),
map(res => decodeDel(res))
);
}
public update(req: UpdateRequest): Observable<UpdateResponse> {
return this.protocolService
.call(SVC_TYPE_BUDDY, SSVC_TYPE_BUDDY_UPD_REQ, ...encodeUpdate(req))
.pipe(
take(1),
map(res => decodeUpdate(res))
);
}
}