2019-11-13 13:55:28 +09:00
|
|
|
import { Injectable, Inject } from '@angular/core';
|
2019-11-26 17:54:37 +09:00
|
|
|
import {
|
|
|
|
HttpClient,
|
|
|
|
HttpHeaders,
|
|
|
|
HttpRequest,
|
2019-11-28 17:30:43 +09:00
|
|
|
HttpResponse,
|
|
|
|
HttpEventType
|
2019-11-26 17:54:37 +09:00
|
|
|
} from '@angular/common/http';
|
2019-11-13 13:55:28 +09:00
|
|
|
|
|
|
|
import { Observable } from 'rxjs';
|
2019-11-26 17:54:37 +09:00
|
|
|
import { map, filter } from 'rxjs/operators';
|
2019-11-13 13:55:28 +09:00
|
|
|
|
|
|
|
import { _MODULE_CONFIG } from '../config/token';
|
|
|
|
import { ModuleConfig } from '../config/module-config';
|
|
|
|
import { UrlConfig } from '@ucap-webmessenger/core';
|
|
|
|
import { Urls } from '../config/urls';
|
2019-11-13 15:42:30 +09:00
|
|
|
import {
|
|
|
|
RetrieveRequest,
|
2019-11-14 10:31:23 +09:00
|
|
|
RetrieveResponse,
|
2019-11-13 15:42:30 +09:00
|
|
|
encodeRetrieve,
|
2019-11-14 10:31:23 +09:00
|
|
|
decodeRetrieveSend,
|
|
|
|
decodeRetrieveReceive,
|
|
|
|
decodeRetrieveReservation,
|
|
|
|
RetrieveSearchRequest,
|
|
|
|
decodeRetrieveSearch
|
|
|
|
} from '../apis/retrieve';
|
|
|
|
import {
|
|
|
|
SendRequest,
|
|
|
|
SendResponse,
|
|
|
|
encodeSend,
|
|
|
|
decodeSend
|
|
|
|
} from '../apis/send';
|
|
|
|
import {
|
|
|
|
DetailRequest,
|
|
|
|
DetailResponse,
|
|
|
|
encodeDetail,
|
|
|
|
decodeDetail,
|
|
|
|
ReadRequest,
|
|
|
|
ReadResponse,
|
|
|
|
encodeRead,
|
|
|
|
decodeRead,
|
|
|
|
ReadCheckResponse,
|
|
|
|
decodeReadCheck,
|
|
|
|
CancelRequest,
|
|
|
|
CancelResponse,
|
|
|
|
encodeCancel,
|
|
|
|
decodeCancel,
|
|
|
|
CancelReservationRequest,
|
|
|
|
CancelReservationResponse,
|
|
|
|
encodeCancelReservation,
|
|
|
|
decodeCancelReservation,
|
|
|
|
RetrieveResourceFileRequest,
|
|
|
|
RetrieveResourceFileResponse,
|
|
|
|
encodeRetrieveResourceFile,
|
|
|
|
decodeRetrieveResourceFile
|
|
|
|
} from '../apis/detail';
|
|
|
|
import { DelRequest, DelResponse, decodeDel, encodeDel } from '../apis/del';
|
|
|
|
import {
|
|
|
|
SaveMyRequest,
|
|
|
|
SaveMyResponse,
|
|
|
|
encodeSaveMy,
|
|
|
|
decodeSaveMy,
|
|
|
|
RetrieveMyRequest,
|
|
|
|
RetrieveMyResponse,
|
|
|
|
encodeRetrieveMy,
|
|
|
|
decodeRetrieveMy,
|
|
|
|
DelMyRequest,
|
|
|
|
DelMyResponse,
|
|
|
|
encodeDelMy,
|
|
|
|
decodeDelMy,
|
|
|
|
EditMyRequest,
|
|
|
|
EditMyResponse,
|
|
|
|
encodeEditMy,
|
|
|
|
decodeEditMy
|
|
|
|
} from '../apis/my-message';
|
|
|
|
import {
|
|
|
|
EditReservationRequest,
|
|
|
|
EditReservationResponse,
|
|
|
|
encodeEditReservation,
|
|
|
|
decodeEditReservation
|
|
|
|
} from '../apis/edit-reservation-ex';
|
|
|
|
import {
|
|
|
|
SendCopyRequest,
|
|
|
|
SendCopyResponse,
|
|
|
|
encodeSendCopy,
|
|
|
|
decodeSendCopy
|
|
|
|
} from '../apis/send-copy';
|
|
|
|
import {
|
|
|
|
UnreadCountRequest,
|
|
|
|
UnreadCountResponse,
|
|
|
|
encodeUnreadCount,
|
|
|
|
decodeUnreadCount
|
|
|
|
} from '../apis/unread-count';
|
2019-11-13 13:55:28 +09:00
|
|
|
|
|
|
|
@Injectable({
|
2019-11-13 15:42:30 +09:00
|
|
|
providedIn: 'root'
|
2019-11-13 13:55:28 +09:00
|
|
|
})
|
|
|
|
export class MessageApiService {
|
|
|
|
readonly urls: Urls;
|
|
|
|
|
2019-11-14 13:30:28 +09:00
|
|
|
headers: HttpHeaders;
|
|
|
|
|
2019-11-13 13:55:28 +09:00
|
|
|
constructor(
|
|
|
|
@Inject(_MODULE_CONFIG) private moduleConfig: ModuleConfig,
|
|
|
|
private httpClient: HttpClient
|
|
|
|
) {
|
|
|
|
this.urls = UrlConfig.getUrls(
|
|
|
|
this.moduleConfig.hostConfig,
|
|
|
|
this.moduleConfig.urls
|
|
|
|
);
|
2019-11-14 13:30:28 +09:00
|
|
|
|
|
|
|
this.headers = new HttpHeaders({
|
|
|
|
'Content-Type': 'application/json; charset=utf-8'
|
|
|
|
});
|
2019-11-13 13:55:28 +09:00
|
|
|
}
|
|
|
|
|
2019-11-14 10:31:23 +09:00
|
|
|
/** retrieve */
|
2019-11-13 15:42:30 +09:00
|
|
|
public retrieveSendMessage(
|
|
|
|
req: RetrieveRequest
|
2019-11-14 10:31:23 +09:00
|
|
|
): Observable<RetrieveResponse> {
|
2019-11-13 13:55:28 +09:00
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.retrieveSendMessageList, encodeRetrieve(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-13 15:42:30 +09:00
|
|
|
.pipe(map(res => decodeRetrieveSend(res)));
|
2019-11-13 13:55:28 +09:00
|
|
|
}
|
2019-11-14 10:31:23 +09:00
|
|
|
public retrieveReceiveMessage(
|
|
|
|
req: RetrieveRequest
|
|
|
|
): Observable<RetrieveResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.retrieveRecvMessageList, encodeRetrieve(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeRetrieveReceive(res)));
|
|
|
|
}
|
|
|
|
public retrieveReservationMessage(
|
|
|
|
req: RetrieveRequest
|
|
|
|
): Observable<RetrieveResponse> {
|
|
|
|
return this.httpClient
|
|
|
|
.post<any>(
|
|
|
|
this.urls.retrieveReservationMessageList,
|
2019-11-14 13:30:28 +09:00
|
|
|
encodeRetrieve(req),
|
2019-11-14 10:31:23 +09:00
|
|
|
{
|
2019-11-14 13:30:28 +09:00
|
|
|
headers: this.headers
|
2019-11-14 10:31:23 +09:00
|
|
|
}
|
|
|
|
)
|
|
|
|
.pipe(map(res => decodeRetrieveReservation(res)));
|
|
|
|
}
|
|
|
|
public retrieveSearchMessage(
|
|
|
|
req: RetrieveSearchRequest
|
|
|
|
): Observable<RetrieveResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.retrieveSearchMessage, encodeRetrieve(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeRetrieveSearch(res)));
|
|
|
|
}
|
|
|
|
|
|
|
|
/** send */
|
|
|
|
public sendMessage(req: SendRequest): Observable<SendResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.sendNewMessage, encodeSend(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeSend(res)));
|
|
|
|
}
|
|
|
|
|
|
|
|
/** detail */
|
|
|
|
public detailMessage(req: DetailRequest): Observable<DetailResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.retrieveMessageDetail, encodeDetail(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeDetail(res)));
|
|
|
|
}
|
|
|
|
public readMessage(req: ReadRequest): Observable<ReadResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.readMessage, encodeRead(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeRead(res)));
|
|
|
|
}
|
|
|
|
public retrieveReadCheck(req: ReadRequest): Observable<ReadCheckResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.retrieveReadCheck, encodeRead(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeReadCheck(res)));
|
|
|
|
}
|
|
|
|
public cancelMessage(req: CancelRequest): Observable<CancelResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.cancelMessage, encodeCancel(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeCancel(res)));
|
|
|
|
}
|
|
|
|
public cancelReservationMessage(
|
|
|
|
req: CancelReservationRequest
|
|
|
|
): Observable<CancelReservationResponse> {
|
|
|
|
return this.httpClient
|
|
|
|
.post<any>(
|
|
|
|
this.urls.cancelReservationMessage,
|
2019-11-14 13:30:28 +09:00
|
|
|
encodeCancelReservation(req),
|
2019-11-14 10:31:23 +09:00
|
|
|
{
|
2019-11-14 13:30:28 +09:00
|
|
|
headers: this.headers
|
2019-11-14 10:31:23 +09:00
|
|
|
}
|
|
|
|
)
|
|
|
|
.pipe(map(res => decodeCancelReservation(res)));
|
|
|
|
}
|
|
|
|
public retrieveResourceFile(
|
|
|
|
req: RetrieveResourceFileRequest
|
2019-11-26 17:54:37 +09:00
|
|
|
): Observable<Blob> {
|
|
|
|
const httpReq = new HttpRequest(
|
|
|
|
'POST',
|
|
|
|
this.urls.retrieveResourceFile,
|
|
|
|
encodeRetrieveResourceFile(req),
|
|
|
|
{
|
|
|
|
headers: this.headers,
|
2019-11-28 17:30:43 +09:00
|
|
|
reportProgress: true,
|
2019-11-26 17:54:37 +09:00
|
|
|
responseType: 'blob'
|
|
|
|
}
|
|
|
|
);
|
|
|
|
return this.httpClient.request(httpReq).pipe(
|
|
|
|
filter(event => {
|
|
|
|
if (event instanceof HttpResponse) {
|
|
|
|
return true;
|
2019-11-28 17:30:43 +09:00
|
|
|
} else if (HttpEventType.DownloadProgress === event.type) {
|
2019-11-14 10:31:23 +09:00
|
|
|
}
|
2019-11-26 17:54:37 +09:00
|
|
|
return false;
|
|
|
|
}),
|
|
|
|
map((event: HttpResponse<any>) => {
|
|
|
|
return event.body;
|
|
|
|
})
|
|
|
|
);
|
2019-11-14 10:31:23 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
/** del */
|
|
|
|
public deleteMessage(req: DelRequest): Observable<DelResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.deleteMessage, encodeDel(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeDel(res)));
|
|
|
|
}
|
|
|
|
|
|
|
|
/** save my message */
|
|
|
|
public saveMyMessage(req: SaveMyRequest): Observable<SaveMyResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.saveMyMessage, encodeSaveMy(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeSaveMy(res)));
|
|
|
|
}
|
|
|
|
public retrieveMyMessage(
|
|
|
|
req: RetrieveMyRequest
|
|
|
|
): Observable<RetrieveMyResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.retrieveMyMessage, encodeRetrieveMy(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeRetrieveMy(res)));
|
|
|
|
}
|
|
|
|
public deleteMyMessage(req: DelMyRequest): Observable<DelMyResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.deleteMyMessage, encodeDelMy(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeDelMy(res)));
|
|
|
|
}
|
|
|
|
public editMyMessage(req: EditMyRequest): Observable<EditMyResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.editMyMessage, encodeEditMy(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeEditMy(res)));
|
|
|
|
}
|
|
|
|
|
|
|
|
/** edit reservation */
|
|
|
|
public editReservationMessageEx(
|
|
|
|
req: EditReservationRequest
|
|
|
|
): Observable<EditReservationResponse> {
|
|
|
|
return this.httpClient
|
|
|
|
.post<any>(
|
|
|
|
this.urls.editReservationMessageEx,
|
2019-11-14 13:30:28 +09:00
|
|
|
encodeEditReservation(req),
|
2019-11-14 10:31:23 +09:00
|
|
|
{
|
2019-11-14 13:30:28 +09:00
|
|
|
headers: this.headers
|
2019-11-14 10:31:23 +09:00
|
|
|
}
|
|
|
|
)
|
|
|
|
.pipe(map(res => decodeEditReservation(res)));
|
|
|
|
}
|
|
|
|
|
|
|
|
/** send-copy(forward) */
|
|
|
|
public sendCopyMessage(req: SendCopyRequest): Observable<SendCopyResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.sendCopyMessage, encodeSendCopy(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeSendCopy(res)));
|
|
|
|
}
|
|
|
|
|
|
|
|
/** unread count */
|
|
|
|
public retrieveUnreadCount(
|
|
|
|
req: UnreadCountRequest
|
|
|
|
): Observable<UnreadCountResponse> {
|
|
|
|
return this.httpClient
|
2019-11-14 13:30:28 +09:00
|
|
|
.post<any>(this.urls.retrieveUnreadCount, encodeUnreadCount(req), {
|
|
|
|
headers: this.headers
|
|
|
|
})
|
2019-11-14 10:31:23 +09:00
|
|
|
.pipe(map(res => decodeUnreadCount(res)));
|
|
|
|
}
|
2019-11-13 13:55:28 +09:00
|
|
|
}
|