[Ils-source] r1605 - trunk/webapp/examples

scribe at crosswire.org scribe at crosswire.org
Sat Jul 28 04:13:47 MST 2018


Author: scribe
Date: 2018-07-28 04:13:47 -0700 (Sat, 28 Jul 2018)
New Revision: 1605

Added:
   trunk/webapp/examples/testapilaunchcourse.jsp
Log:
added example showing lauching course with the ils


Added: trunk/webapp/examples/testapilaunchcourse.jsp
===================================================================
--- trunk/webapp/examples/testapilaunchcourse.jsp	                        (rev 0)
+++ trunk/webapp/examples/testapilaunchcourse.jsp	2018-07-28 11:13:47 UTC (rev 1605)
@@ -0,0 +1,105 @@
+<%@ page
+    language="java"
+    contentType="text/html;charset=utf-8"
+%>
+
+<%@ page import="java.util.Map"%>
+<%@ page import="java.util.HashMap"%>
+<%@ page import="java.net.Authenticator"%>
+<%@ page import="java.net.PasswordAuthentication"%>
+<%@ page import="java.net.URL"%>
+<%@ page import="java.net.URLConnection"%>
+<%@ page import="java.net.URLEncoder"%>
+<%@ page import="java.io.DataOutputStream"%>
+<%@ page import="java.io.BufferedReader"%>
+<%@ page import="java.io.InputStreamReader"%>
+<%@ page import="org.crosswire.xml.XMLBlock"%>
+
+<%
+	String userName = request.getParameter("userName");
+	if (userName == null) userName = "user1";
+	String userPW = request.getParameter("userPW");
+	if (userPW == null) userPW = "changeme";
+	int courseID = 1; try { courseID = Integer.parseInt(request.getParameter("courseID")); } catch (Exception e) {}
+	Map<String, String> aiccUserData = new HashMap<String, String>();
+	for (int i = 0; i < 7; ++i) {
+		String audk = request.getParameter("audk"+i);
+		String audv = request.getParameter("audv"+i);
+		if (audk != null && audv != null && audk.length() > 0) {
+			aiccUserData.put(audk, audv);
+		}
+	}
+	if (aiccUserData.isEmpty()) {
+		aiccUserData.put("X", "1");
+		aiccUserData.put("Y", "2");
+		aiccUserData.put("Z", "3");
+	}
+
+	String action = request.getParameter("action");
+
+	if ("launch".equals(action)) {
+		String aiccUserBlob = "";
+		for (String k: aiccUserData.keySet()) {
+			if (aiccUserBlob.length() > 0) aiccUserBlob += "\n";
+			aiccUserBlob += k + "=" + aiccUserData.get(k);
+		}
+		URL url  = new URL(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath() + "/api/session/login/index.jsp");
+		URL url2 = new URL(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath() + "/api/session/launch/index.jsp");
+		URL launchPoint = new URL(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath() + "/aicc.jsp?courseid="+courseID+"&aicc_userdata=" + URLEncoder.encode(aiccUserBlob));
+
+		// Set the default authenticator to use our API username and password
+		Authenticator.setDefault(new Authenticator() {
+			protected PasswordAuthentication getPasswordAuthentication() {
+				return new PasswordAuthentication("apiloginid", "apiloginpassword".toCharArray());
+			}
+		});
+
+		URLConnection urlConn = url.openConnection();
+		urlConn.setDoInput(true);
+		urlConn.setDoOutput(true);
+		urlConn.setUseCaches(false);
+		urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+		DataOutputStream outStream = new DataOutputStream(urlConn.getOutputStream());
+
+		StringBuffer content = new StringBuffer();
+
+		// What iLS login to use for this transaction
+		content.append("ILSUSER=").append(URLEncoder.encode(userName, "UTF-8"));
+		content.append("&ILSPASSWD=").append(URLEncoder.encode(userPW, "UTF-8"));
+
+
+		outStream.writeBytes(content.toString());
+		outStream.flush();
+		outStream.close();
+
+		XMLBlock result = XMLBlock.loadXMLBlock(urlConn.getInputStream());
+		String uuid = result.getAttribute("uuid");
+%>
+<html><head>
+<meta http-equiv="Refresh" content="0;URL=<%=url2%>?uuid=<%=uuid%>&launchPoint=<%=URLEncoder.encode(launchPoint.toString())%>">
+</head></html>
+<%
+}
+else {
+%>
+<html><body>
+<form method="POST" action="#">
+<table>
+<tr><th>User Name</th><td><input name="userName" value="<%=userName%>"/></td></tr>
+<tr><th>Password</th><td><input name="userPW" type="password" value="<%=userPW%>"/></td></tr>
+<tr><th>Course ID</th><td><input name="courseID" value="<%=courseID%>"/></td></tr>
+<tr><th>AICC User Data Key</th><th>Value</th></tr>
+<% int i = 0; for (String k: aiccUserData.keySet()) {%>
+<tr><td><input name="audk<%=i%>" value="<%=k%>"/></td><td><input name="audv<%=i%>" value="<%=aiccUserData.get(k)%>"/></td></tr>
+<% ++i; }%>
+<% for (; i < 7; ++i) {%>
+<tr><td><input name="audk<%=i%>" value=""/></td><td><input name="audv<%=i%>" value=""/></td></tr>
+<%}%>
+</table>
+<input type="hidden" name="action" value="launch" />
+<button>Submit</button>
+</form>
+</body></html>
+<%
+}
+%>




More information about the Ils-source mailing list