From bb9499339d13dcc8a9ed6d75e6b040ecd8a57acb Mon Sep 17 00:00:00 2001
From: wayne <wayne8692wayne8692@gmail.com>
Date: 星期二, 30 十一月 2021 13:06:17 +0800
Subject: [PATCH] [ref] 重構OTP response code

---
 pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java |   58 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 31 insertions(+), 27 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java b/pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java
index 144e202..b61ef34 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java
@@ -6,11 +6,11 @@
 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 tw.com.softleader.otp.ws.OtpWeb;
+import tw.com.softleader.otp.ws.StringArray;
 
-import javax.xml.rpc.ServiceException;
-import java.rmi.RemoteException;
+import java.net.MalformedURLException;
+import java.net.URL;
 
 @Service
 public class OtpWebService {
@@ -20,43 +20,47 @@
     @Autowired
     ApplicationProperties applicationProperty;
 
-    public OtpResponseDTO sendByPhone(String phone) throws ServiceException, RemoteException {
-        OtpWebServicePortBindingStub stub = getOtpWebServicePortBindingStub();
-        log.info("call OtpService sendOtpBySMS, url = {}, systemType = {}, service password = {}, phone = {}",
+    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);
 
-        String[] result =
-            stub.sendOtpBySMS(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), phone);
+        StringArray result =
+            otpWS.sendOtpBySMS(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), phone);
 
-        return new OtpResponseDTO(result);
+        return new OtpResponseDTO(result.getItem());
     }
 
-    public OtpResponseDTO sendByEmail(String email) throws ServiceException, RemoteException {
-        OtpWebServicePortBindingStub stub = getOtpWebServicePortBindingStub();
-        log.info("call OtpService sendByEmail, url = {}, systemType = {}, service password = {}, email = {}",
+    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);
 
-        String[] result =
-            stub.sendOtpByEmail(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), email);
+        StringArray result =
+            otpWS.sendOtpByEmail(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), email);
 
-        return new OtpResponseDTO(result);
+        return new OtpResponseDTO(result.getItem());
     }
 
-    public OtpResponseDTO verifyOTP(String indexKey, String otpCode) throws ServiceException, RemoteException {
-        OtpWebServicePortBindingStub stub = getOtpWebServicePortBindingStub();
-        log.info("call OtpService verifyOTP, url = {}, systemType = {}, service password = {}, indexKey = {}, otpCode = {}",
+    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);
 
-        String[] result =
-            stub.verifyOtp(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), indexKey, otpCode);
+        StringArray result =
+            otpWS.verifyOtp(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), indexKey, otpCode);
 
-        return new OtpResponseDTO(result);
+        return new OtpResponseDTO(result.getItem());
     }
 
-    public OtpWebServicePortBindingStub getOtpWebServicePortBindingStub() throws ServiceException {
-        OtpWebServiceLocator locator = new OtpWebServiceLocator();
-        locator.setOtpWebServicePortEndpointAddress(applicationProperty.getOtpWebServiceUrl());
-
-        return (OtpWebServicePortBindingStub) locator.getOtpWebServicePort();
+    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);
+        }
     }
 }

--
Gitblit v1.8.0