Adds demo auth method. Tweaks polling & state fields setup.
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / sp / ServiceProxyClient.java
index 3724362..244496a 100644 (file)
@@ -59,12 +59,14 @@ public class ServiceProxyClient implements SearchClient {
   ProxyPz2ResponseHandler handler = new ProxyPz2ResponseHandler();\r
   private HttpClient client;\r
   private ServiceProxyUser user;\r
+  private Pazpar2Command checkAuth = null;\r
+\r
 \r
   public ServiceProxyClient () {\r
     SchemeRegistry schemeRegistry = new SchemeRegistry();\r
     schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));\r
     ClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);\r
-    client = new DefaultHttpClient(cm);    \r
+    client = new DefaultHttpClient(cm);   \r
   }\r
     \r
   @Override\r
@@ -73,7 +75,9 @@ public class ServiceProxyClient implements SearchClient {
     try {\r
       config = configReader.getConfiguration(this);      \r
       serviceUrl = config.getMandatory(SERVICE_PROXY_URL);  \r
-      this.initDocPaths = getMultiProperty(config.get(SP_INIT_DOC_PATHS));            \r
+      this.initDocPaths = getMultiProperty(config.get(SP_INIT_DOC_PATHS));\r
+      checkAuth = new Pazpar2Command("auth",null);\r
+      checkAuth.setParameterInState(new CommandParameter("action","=","check"));\r
     } catch (ConfigurationException c) {\r
       c.printStackTrace();\r
     } catch (MissingMandatoryParameterException mmp) {\r
@@ -92,17 +96,19 @@ public class ServiceProxyClient implements SearchClient {
   public boolean authenticate (AuthenticationEntity user) {\r
     try {      \r
       logger.info("Authenticating [" + user.getProperty("name") + "]");\r
-      this.user = (ServiceProxyUser) user;\r
+      this.user = (ServiceProxyUser) user;      \r
       Pazpar2Command auth = new Pazpar2Command("auth",null);\r
       auth.setParametersInState(new CommandParameter("action","=","login"), \r
                                 new CommandParameter("username","=",user.getProperty("name")), \r
-                                new CommandParameter("password","=",user.getProperty("password")));\r
+                                new CommandParameter("password","=",user.getProperty("password")));                                \r
       byte[] response = send(auth);\r
       String responseStr = new String(response,"UTF-8");\r
       logger.info(responseStr);      \r
       if (responseStr.contains("FAIL")) {\r
+        this.user.isAuthenticated(false);\r
         return false;\r
       } else {\r
+        this.user.isAuthenticated(true);\r
         return true;\r
       }      \r
     } catch (ClientProtocolException e) {\r
@@ -116,12 +122,18 @@ public class ServiceProxyClient implements SearchClient {
     }        \r
   }\r
   \r
-  public boolean checkAuthentication () {\r
+  public boolean checkAuthentication () {    \r
     try {\r
-      Pazpar2Command check = new Pazpar2Command("auth",null);\r
-      check.setParameter(new CommandParameter("action","=","check"));\r
-      byte[] response = send(check);\r
+      byte[] response = send(checkAuth);\r
       logger.info(new String(response,"UTF-8"));\r
+      String responseStr = new String(response,"UTF-8");    \r
+      if (responseStr.contains("FAIL")) {\r
+        this.user.isAuthenticated(false);\r
+        return false;\r
+      } else {\r
+        this.user.isAuthenticated(true);\r
+        return true;\r
+      }      \r
     } catch (ClientProtocolException e) {\r
       // TODO Auto-generated catch block\r
       e.printStackTrace();\r
@@ -130,9 +142,7 @@ public class ServiceProxyClient implements SearchClient {
       // TODO Auto-generated catch block\r
       e.printStackTrace();\r
       return false;\r
-    }    \r
-    return true;\r
-    \r
+    }        \r
   }\r
   \r
   public boolean isAuthenticatingClient () {\r
@@ -162,6 +172,15 @@ public class ServiceProxyClient implements SearchClient {
     return response;\r
   }\r
   \r
+  private byte[] send (String queryString) throws ClientProtocolException, IOException {\r
+    String url = serviceUrl + "?" + queryString; \r
+    logger.info("Sending request "+url);    \r
+    HttpGet httpget = new HttpGet(url);     \r
+    byte[] response = client.execute(httpget, handler);    \r
+    return response;\r
+    \r
+  }\r
+  \r
   public class ProxyPz2ResponseHandler implements ResponseHandler<byte[]> {\r
     private StatusLine statusLine = null;\r
     public byte[] handleResponse(HttpResponse response) throws ClientProtocolException, IOException {\r