|
|
|
@ -3,8 +3,6 @@ package cokr.xit.ens.modules.nice.service.support;
|
|
|
|
|
import java.io.*;
|
|
|
|
|
import java.net.*;
|
|
|
|
|
import java.nio.charset.*;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.*;
|
|
|
|
|
|
|
|
|
|
import javax.validation.*;
|
|
|
|
|
|
|
|
|
@ -55,28 +53,10 @@ public class NiceCiApiService {
|
|
|
|
|
* @param reqDTO NiceCiApiSendDTO.Request
|
|
|
|
|
* @return EnsResponseVO
|
|
|
|
|
*/
|
|
|
|
|
public EnsResponseVO<?> requestSendBulk(final NiceCiApiSendDTO.Request reqDTO) {
|
|
|
|
|
List<String> errors = new ArrayList<>();
|
|
|
|
|
final Set<ConstraintViolation<NiceCiApiSendDTO.Request>> list = validator.validate(reqDTO);
|
|
|
|
|
if (!list.isEmpty()) {
|
|
|
|
|
errors.addAll(list.stream()
|
|
|
|
|
.map(row -> String.format("%s=%s", row.getPropertyPath(), row.getMessageTemplate()))
|
|
|
|
|
.collect(Collectors.toList())
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!errors.isEmpty()){
|
|
|
|
|
return EnsResponseVO.errBuilder()
|
|
|
|
|
.errCode(EnsErrCd.INVALID_DATA)
|
|
|
|
|
.errMsg(errors.toString())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.info("API call parameter :: {}", reqDTO);
|
|
|
|
|
String ciTxt = reqDTO.ofString();
|
|
|
|
|
String ft = String.format("%s%s", StringUtils.leftPad(String.valueOf(NiceCiUtils.lengthKr(ciTxt)), 10, "0"),
|
|
|
|
|
ciTxt);
|
|
|
|
|
public EnsResponseVO<?> requestSendBulk(final String trscId, final String ciText) {
|
|
|
|
|
String ft = String.format("%s%s", trscId, ciText);
|
|
|
|
|
log.info("kr length - {}, utf-8 length - {}", NiceCiUtils.lengthKr(ft), ft.length());
|
|
|
|
|
log.debug("송신 요청 전문\n[{}]", ft);
|
|
|
|
|
|
|
|
|
|
final String rtnMsg;
|
|
|
|
|
try {
|
|
|
|
@ -97,32 +77,12 @@ public class NiceCiApiService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NICE CI SMS 전송 상태 조회 API
|
|
|
|
|
* @param reqDTO NiceCiApiStatusDTO.Request
|
|
|
|
|
* @return EnsResponseVO
|
|
|
|
|
*/
|
|
|
|
|
public EnsResponseVO<?> findBulkStatus(final NiceCiApiStatusDTO.Request reqDTO) {
|
|
|
|
|
List<String> errors = new ArrayList<>();
|
|
|
|
|
final Set<ConstraintViolation<NiceCiApiStatusDTO.Request>> list = validator.validate(reqDTO);
|
|
|
|
|
if (!list.isEmpty()) {
|
|
|
|
|
errors.addAll(list.stream()
|
|
|
|
|
.map(row -> String.format("%s=%s", row.getPropertyPath(), row.getMessageTemplate()))
|
|
|
|
|
.collect(Collectors.toList())
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!errors.isEmpty()){
|
|
|
|
|
return EnsResponseVO.errBuilder()
|
|
|
|
|
.errCode(EnsErrCd.INVALID_DATA)
|
|
|
|
|
.errMsg(errors.toString())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.info("API call parameter :: {}", reqDTO);
|
|
|
|
|
String ciTxt = reqDTO.ofString();
|
|
|
|
|
String ft = String.format("%s%s", StringUtils.leftPad(String.valueOf(NiceCiUtils.lengthKr(ciTxt)), 10, "0"),
|
|
|
|
|
ciTxt);
|
|
|
|
|
public EnsResponseVO<?> findBulkStatus(final String trscId, final String ciText) {
|
|
|
|
|
String ft = String.format("%s%s", trscId, ciText);
|
|
|
|
|
log.info("kr length - {}, utf-8 length - {}", NiceCiUtils.lengthKr(ft), ft.length());
|
|
|
|
|
|
|
|
|
|
log.debug("상태 조회 요청 전문\n[{}]", ft);
|
|
|
|
|
final String rtnMsg;
|
|
|
|
|
try {
|
|
|
|
|
rtnMsg = sendNiceCiSocket(ft);
|
|
|
|
@ -146,31 +106,33 @@ public class NiceCiApiService {
|
|
|
|
|
try (Socket socket = new Socket(HOST, PORT); // 서버에 연결
|
|
|
|
|
BufferedWriter out = new BufferedWriter(
|
|
|
|
|
new OutputStreamWriter(socket.getOutputStream(), Charset.forName("EUC-KR")));
|
|
|
|
|
//new OutputStreamWriter(socket.getOutputStream()));
|
|
|
|
|
BufferedReader in = new BufferedReader(
|
|
|
|
|
new InputStreamReader(socket.getInputStream(), Charset.forName("EUC-KR")))) {
|
|
|
|
|
|
|
|
|
|
socket.setSoTimeout(TIMEOUT); // 읽기 타임아웃 설정
|
|
|
|
|
|
|
|
|
|
out.write(binTxt);
|
|
|
|
|
|
|
|
|
|
// FIXME: 테스트 소켓서버 통신을 위해 임시로 추가 : 테스트 완료후 제거
|
|
|
|
|
// out.write("\nEXIT");
|
|
|
|
|
// out.newLine();
|
|
|
|
|
// FIXME: 테스트 소켓서버 통신을 위해 임시로 추가 : 테스트 완료후 제거
|
|
|
|
|
|
|
|
|
|
out.flush();
|
|
|
|
|
|
|
|
|
|
rtnMsg = in.readLine();
|
|
|
|
|
System.out.println("=============>>>서버 응답(EUC-KR로 읽어온 값)<<<====================================");
|
|
|
|
|
System.out.println(rtnMsg);
|
|
|
|
|
System.out.println("=============>>>서버 응답(EUC-KR로 읽어온 값)<<<====================================");
|
|
|
|
|
StringBuffer sb = new StringBuffer();
|
|
|
|
|
int ch;
|
|
|
|
|
while ((ch = in.read()) != -1) {
|
|
|
|
|
sb.append((char) ch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rtnMsg = sb.toString();
|
|
|
|
|
log.info("=============>>>서버 응답(EUC-KR로 읽어온 값)<<<====================================");
|
|
|
|
|
log.info("[{}]", rtnMsg);
|
|
|
|
|
log.info("=============>>>서버 응답(EUC-KR로 읽어온 값)<<<====================================");
|
|
|
|
|
|
|
|
|
|
} catch (SocketTimeoutException e) {
|
|
|
|
|
// 타임아웃 발생 시 처리
|
|
|
|
|
log.error("NICE CI Socket 서버 응답 시간 초과: " + e.getMessage());
|
|
|
|
|
throw new EnsException(EnsErrCd.API_COMM_ERROR, "NICE CI Socket 서버 응답 시간 초과");
|
|
|
|
|
|
|
|
|
|
} catch (ConnectException e) {
|
|
|
|
|
log.error("NICE CI Socket 서버 ConnectException ERROR :: {}", ObjectUtils.isNotEmpty(e.getCause())? e.getCause().getMessage() : e.getMessage());
|
|
|
|
|
throw new EnsException(EnsErrCd.API_COMM_ERROR, ObjectUtils.isNotEmpty(e.getCause())? e.getCause().getMessage() : e.getMessage());
|
|
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
log.error("NICE CI Socket 서버 ERROR :: {}", ObjectUtils.isNotEmpty(e.getCause())? e.getCause().getMessage() : e.getMessage());
|
|
|
|
|
throw new EnsException(EnsErrCd.API_COMM_ERROR, ObjectUtils.isNotEmpty(e.getCause())? e.getCause().getMessage() : e.getMessage());
|
|
|
|
|