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