Statistics
| Branch: | Tag: | Revision:

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>