1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
\r
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
\r
5 <title>REST API Test page</title>
\r
6 <script type="text/javascript" src="http://pajhome.org.uk/crypt/md5/sha1.js"></script>
\r
7 <script type="text/javascript">
\r
9 // Use strict RFC compliance
\r
12 var resource = document.getElementById("resource").value;
\r
13 var user = document.getElementById("user").value;
\r
14 var token = document.getElementById("token").value;
\r
15 var method = document.getElementById("method").value;
\r
16 var modified = document.getElementById("modified").value;
\r
17 var file = document.getElementById("file").value;
\r
18 var form = document.getElementById("form").value;
\r
19 var update = document.getElementById("update").value;
\r
20 var timestamp = document.getElementById('timestamp').value;
\r
21 var formfile = document.getElementById('formfile');
\r
22 var authparam = document.getElementById('authparam');
\r
24 var now = timestamp? timestamp: (new Date()).toUTCString();
\r
25 var q = resource.indexOf('?');
\r
26 var res = q == -1? resource: resource.substring(0, q);
\r
27 var data = method + now + res;
\r
28 var sig = b64_hmac_sha1(atob(token), data);
\r
34 // Browser upload with POST.
\r
35 if (formfile.value) {
\r
36 var formdate = document.getElementById('formdate');
\r
37 var formauth = document.getElementById('formauth');
\r
38 res = resource+formfile.value;
\r
39 data = 'POST' + now + encodeURI(decodeURI(res));
\r
40 sig = b64_hmac_sha1(atob(token), data);
\r
41 formauth.value = user + " " + sig;
\r
42 formdate.value = now;
\r
43 var upload = document.upload;
\r
44 upload.action = '/gss/rest'+res;
\r
49 // All other API operations.
\r
50 var req = new XMLHttpRequest();
\r
51 var requesturi = '/pithos/rest'+resource;
\r
52 if (authparam.checked)
\r
53 requesturi += '?Date=' + now + '&Authorization=' +user + " " + sig;
\r
54 req.open(method, requesturi, true);
\r
55 req.onreadystatechange = function (event) {
\r
56 if (req.readyState == 4) {
\r
57 if(req.status == 200) {
\r
58 var result = document.getElementById("result");
\r
59 result.innerHTML = "<pre>"+req.getAllResponseHeaders()+"\n"+req.responseText+"</pre>";
\r
61 var result = document.getElementById("result");
\r
62 result.innerHTML = "<span style='color: red'>"+req.status+": "+req.statusText+"</span>"+"<pre>"+req.getAllResponseHeaders()+"</pre>";
\r
66 if (!authparam.checked) {
\r
67 req.setRequestHeader("Authorization", user + " " + sig);
\r
68 req.setRequestHeader("X-GSS-Date", now);
\r
71 req.setRequestHeader("If-Modified-Since", modified);
\r
74 req.setRequestHeader("Content-Type", "text/plain");
\r
75 req.setRequestHeader("Content-Length", file.length);
\r
77 req.setRequestHeader("Content-Length", params.length);
\r
78 req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
\r
79 } else if (update) {
\r
80 req.setRequestHeader("Content-Length", params.length);
\r
81 req.setRequestHeader("Content-Type", "application/json;");
\r
93 <tr><td>Resource </td><td><input id="resource" size="100"></td></tr>
\r
94 <tr><td>Method </td><td><input id="method"></td></tr>
\r
95 <tr><td>Username </td><td><input id="user"></td></tr>
\r
96 <tr><td>Auth token </td><td><input id="token" size="100"></td></tr>
\r
97 <tr><td>If-Modified-Since </td><td><input id="modified" size="100"></td></tr>
\r
98 <tr><td>File contents </td><td><input id="file" size="100"></td></tr>
\r
99 <tr><td>POST form </td><td><input id="form"></td></tr>
\r
100 <tr><td>POST JSON update </td><td><input id="update"></td></tr>
\r
101 <tr><td>Autorization in parameters </td><td><input id="authparam" type="checkbox"></td></tr>
\r
102 <tr><td>Date (optional) </td><td><input id="timestamp"></td></tr>
\r
104 <form id="upload" name="upload" method="post" action="/gss/rest" enctype="multipart/form-data">
\r
105 <input id="formdate" type="hidden" name="Date" value="">
\r
106 <input id="formauth" type="hidden" name="Authorization" value="">
\r
107 File upload<input id="formfile" type="file" name="formfile">
\r
108 <input type="submit">
\r
110 <button onclick="send()">send</button><br>
\r
111 <div id="result" style="width: 200px; height: 200px"></div>
\r