package com.pollex.pam.service; import com.pollex.pam.config.ApplicationProperties; import com.pollex.pam.business.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.OtpWeb; import tw.com.softleader.otp.ws.StringArray; import java.net.MalformedURLException; import java.net.URL; @Service public class OtpWebService { private static final Logger log = LoggerFactory.getLogger(OtpWebService.class); @Autowired ApplicationProperties applicationProperty; public OtpResponseDTO sendByPhone(String phone) { OtpWeb otpWS = getOtpWebService(); log.debug("call OtpService sendOtpBySMS, url = {}, systemType = {}, service password = {}, phone = {}", applicationProperty.getOtpWebServiceUrl(), applicationProperty.getOtpWebServiceSystemType(), applicationProperty.getOtpWebServicePassword(), phone); StringArray result = otpWS.sendOtpBySMS(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), phone); return new OtpResponseDTO(result.getItem()); } public OtpResponseDTO sendByEmail(String email) { OtpWeb otpWS = getOtpWebService(); log.debug("call OtpService sendByEmail, url = {}, systemType = {}, service password = {}, email = {}", applicationProperty.getOtpWebServiceUrl(), applicationProperty.getOtpWebServiceSystemType(), applicationProperty.getOtpWebServicePassword(), email); StringArray result = otpWS.sendOtpByEmail(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), email); return new OtpResponseDTO(result.getItem()); } public OtpResponseDTO verifyOTP(String indexKey, String otpCode) { OtpWeb otpWS = getOtpWebService(); log.debug("call OtpService verifyOTP, url = {}, systemType = {}, service password = {}, indexKey = {}, otpCode = {}", applicationProperty.getOtpWebServiceUrl(), applicationProperty.getOtpWebServiceSystemType(), applicationProperty.getOtpWebServicePassword(), indexKey, otpCode); StringArray result = otpWS.verifyOtp(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), indexKey, otpCode); return new OtpResponseDTO(result.getItem()); } public OtpWeb getOtpWebService() { final String wsUrl = applicationProperty.getOtpWebServiceUrl(); try { tw.com.softleader.otp.ws.OtpWebService locator = new tw.com.softleader.otp.ws.OtpWebService(new URL(wsUrl)); return locator.getOtpWebPort(); } catch (MalformedURLException e) { throw new IllegalArgumentException("Invalid url: " + wsUrl, e); } } }