[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