4 import java.io.IOException;
5 import java.net.MalformedURLException;
6 import java.net.URISyntaxException;
8 import java.security.MessageDigest;
9 import java.security.NoSuchAlgorithmException;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 import javax.xml.bind.DatatypeConverter;
15 import jalview.bin.Cache;
16 import jalview.gui.CutAndPasteTransfer;
17 import jalview.gui.Desktop;
19 public class OpenSequenceEndpoint extends EndpointAsync
21 protected String name = "opensequence";
23 private String fileString;
25 private String urlString;
27 private String method;
29 private String dataString;
33 private String content;
44 protected void initialise(HttpServletRequest request,
45 HttpServletResponse response)
47 fileString = request.getParameter("file");
48 urlString = request.getParameter("url");
49 method = request.getMethod().toLowerCase();
50 dataString = request.getParameter("data");
52 post = method.equalsIgnoreCase("post");
53 data = dataString != null;
60 body = getRequestBody(request);
61 } catch (IOException e)
63 returnError(request, response, "could not read POST body");
67 // for ref see md5 later
72 // for ref see md5 later
74 else if (fileString != null)
79 else if (urlString != null)
87 returnError(request, response,
88 "requires POST body or one of parameters 'data', 'file' or 'url'");
92 // final content used in Future
96 content = post ? body : dataString;
99 MessageDigest md5 = MessageDigest.getInstance("MD5");
100 md5.update(content.getBytes());
101 byte[] digest = md5.digest();
102 ref = DatatypeConverter.printBase64Binary(digest).toLowerCase();
103 } catch (NoSuchAlgorithmException e)
113 setId(request, access + "::" + ref);
116 protected void process(HttpServletRequest request,
117 HttpServletResponse response)
121 // Sequence file contents being posted
122 // use File -> Input Alignment -> from Textbox
123 CutAndPasteTransfer cap = new CutAndPasteTransfer();
124 cap.setText(content);
125 cap.ok_actionPerformed(null);
126 cap.cancel_actionPerformed(null);
128 else if (fileString != null)
130 // Sequence file on filesystem
131 // use File -> Input Alignment -> From File
136 url = new URL(fileString);
137 file = new File(url.toURI());
138 } catch (MalformedURLException | URISyntaxException e)
140 returnError(request, response,
141 "could not resolve file='" + fileString + "'");
147 returnError(request, response,
148 "file='" + fileString + "' does not exist");
151 Desktop.instance.openFile(file, null, null);
153 else if (urlString != null)
155 boolean success = Desktop.instance.loadUrl(urlString, null);
158 returnError(request, response,
159 "url='" + urlString + "' could not be opened");