package com.pollex.pam.service;
|
|
import com.pollex.pam.config.ApplicationProperties;
|
import com.pollex.pam.service.dto.OtpResponseDTO;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import tw.com.softleader.otp.ws.OtpWebServiceLocator;
|
import tw.com.softleader.otp.ws.OtpWebServicePortBindingStub;
|
|
import javax.xml.rpc.ServiceException;
|
import java.rmi.RemoteException;
|
|
@Service
|
public class OtpWebService {
|
|
private static final Logger log = LoggerFactory.getLogger(OtpWebService.class);
|
|
@Autowired
|
ApplicationProperties applicationProperty;
|
|
public OtpResponseDTO sendByPhone(String phone) throws ServiceException, RemoteException {
|
OtpWebServicePortBindingStub stub = getOtpWebServicePortBindingStub();
|
log.info("call OtpService snedOtpBySMS, ");
|
|
String[] result =
|
stub.sendOtpBySMS(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), phone);
|
|
return new OtpResponseDTO(result);
|
}
|
|
public OtpResponseDTO sendByEmail(String email) throws ServiceException, RemoteException {
|
OtpWebServicePortBindingStub stub = getOtpWebServicePortBindingStub();
|
|
String[] result =
|
stub.sendOtpByEmail(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), email);
|
|
final OtpResponseDTO otpResponseDTO = new OtpResponseDTO(result);
|
if(otpResponseDTO.isSuccess()) {
|
return otpResponseDTO;
|
}
|
else {
|
throw new RuntimeException("error code = " + otpResponseDTO.getFailCode() + ", error reason = " + otpResponseDTO.getFailReason());
|
}
|
}
|
|
public OtpResponseDTO verifyOTP(String indexKey, String otpCode) throws ServiceException, RemoteException {
|
OtpWebServicePortBindingStub stub = getOtpWebServicePortBindingStub();
|
|
String[] result =
|
stub.verifyOtp(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), indexKey, otpCode);
|
|
return new OtpResponseDTO(result);
|
}
|
|
private OtpWebServicePortBindingStub getOtpWebServicePortBindingStub() throws ServiceException {
|
OtpWebServiceLocator locator = new OtpWebServiceLocator();
|
locator.setOtpWebServicePortEndpointAddress(applicationProperty.getOtpWebServiceUrl());
|
|
return (OtpWebServicePortBindingStub) locator.getOtpWebServicePort();
|
}
|
}
|