]> git.proxmox.com Git - ceph.git/blame - ceph/src/civetweb/test/MethodTest.xhtml
buildsys: switch source download to quincy
[ceph.git] / ceph / src / civetweb / test / MethodTest.xhtml
CommitLineData
7c673cae
FG
1<!DOCTYPE HTML>\r
2<html xmlns="http://www.w3.org/1999/xhtml">\r
3<head>\r
4<meta http-equiv="content-type" content="text/html; charset=UTF-8" />\r
5 <title>HTTP method test</title>\r
6 <style type="text/css" media="screen">\r
7 body {background:#eee; margin:0%; padding:0%; padding-top:0%; padding-left:1%}\r
8 .cform {margin:0%; padding:0%; padding-top:0%; padding-left:2%;}\r
9 h3 {margin:0%; padding:0%; padding-top:0%; padding-left:0%;}\r
10 td {vertical-align:top; text-align:left;}\r
11 </style>\r
12 <script type="text/javascript"><![CDATA[\r
13\r
14 function getParams() {\r
15 var result = {};\r
16 var kvPairs = location.search.slice(1).split('&');\r
17\r
18 kvPairs.forEach(\r
19 function(kvPair) {\r
20 kvPair = kvPair.split('=');\r
21 result[kvPair[0]] = kvPair[1] || '';\r
22 }\r
23 );\r
24\r
25 return result;\r
26 }\r
27\r
28 function noBody() {\r
29 document.getElementById("body_none").checked = true;\r
30 }\r
31\r
32 function load() {\r
33 var params = getParams();\r
34 var method = params["method"];\r
35 if (!method) {\r
36 method = "GET";\r
37 }\r
38 var path = params["path"];\r
39 if (!path) {\r
40 path = "";\r
41 }\r
42\r
43 var elem = document.getElementById('h1');\r
44 elem.innerHTML = "HTTP method test page";\r
45\r
46 document.getElementById("proto_http").checked = (window.location.protocol != "https:");\r
47 document.getElementById("proto_https").checked = (window.location.protocol == "https:");\r
48 document.getElementById("server").value = location.host;\r
49 document.getElementById("resource").value = path;\r
50\r
51 setRadioValue("method", method);\r
52 noBody();\r
53 }\r
54\r
55 function setRadioValue(elmname, value) {\r
56 var elms = document.getElementsByName(elmname);\r
57 var len = elms.length;\r
58 var ret = false;\r
59\r
60 for (var i=0; i<len; i++) {\r
61 elms[i].checked = (elms[i].value == value);\r
62 ret |= elms[i].checked;\r
63 }\r
64 return ret;\r
65 }\r
66\r
67 function getRadioValue(elmname) {\r
68\r
69 var elms = document.getElementsByName(elmname);\r
70 var len = elms.length;\r
71 var ret = "";\r
72\r
73 for (var i=0; i<len; i++) {\r
74 if (elms[i].checked) {\r
75 ret = elms[i].value;\r
76 }\r
77 }\r
78 return ret;\r
79 }\r
80\r
81 function sendreq() {\r
82 var proto = getRadioValue("protocol");\r
83 var host = document.getElementById("server").value;\r
84 var res = document.getElementById("resource").value;\r
85 var addr = proto + "://" + host + "/" + res;\r
86 var meth = getRadioValue("method");\r
87 var body = getRadioValue("body");\r
88\r
89 xmlhttp = new XMLHttpRequest();\r
90 if (!xmlhttp) {\r
91 alert("XMLHttpRequest not available");\r
92 window.history.back();\r
93 }\r
94\r
95 xmlhttp.open(meth,addr,true);\r
96\r
97 if (body == '*') {\r
98 body = null;\r
99 } else {\r
100 if (body == '**') {\r
101 var body_bytes = document.getElementById("body_bytes").value;\r
102 body_bytes = parseInt(Number(body_bytes) || 0) || 0;\r
103 body = "";\r
104 for (var i=0; i<body_bytes; i++) {\r
105 var ascii = Math.floor((Math.random() * 94) + 32);\r
106 body = body + String.fromCharCode(ascii);\r
107 }\r
108 }\r
109 xmlhttp.setRequestHeader("Content-Length", body.length);\r
110 }\r
111\r
112 xmlhttp.onreadystatechange = function()\r
113 {\r
114 var laddr = addr;\r
115 var lmeth = meth;\r
116 var blen = "";\r
117 if (body) {\r
118 blen = "\nWith " + body.length + " bytes body data";\r
119 }\r
120\r
121 if (xmlhttp.readyState == 4)\r
122 {\r
123 alert(lmeth + " " + laddr + blen + "\n\nResponse: " + xmlhttp.status + "\n\n" + xmlhttp.responseText);\r
124 }\r
125 }\r
126\r
127 xmlhttp.send(body);\r
128\r
129 }\r
130\r
131 ]]></script>\r
132\r
133</head>\r
134<body onload="load()">\r
135\r
136<h1 id='h1'>Fatal error: Javascript not available!</h1>\r
137\r
138<h2>Test parameters</h2>\r
139<form lass="cform">\r
140\r
141<h3>Protocol</h3>\r
142<input id="proto_http" type="radio" name="protocol" value="http" /> http <br />\r
143<input id="proto_https" type="radio" name="protocol" value="https" /> https\r
144\r
145<h3>Server/Host</h3>\r
146<input id="server" type="text" name="server" value="" />\r
147\r
148<h3>Resource</h3>\r
149<input id="resource" type="text" name="resource" value="" />\r
150\r
151<h3>Method</h3>\r
152<!-- http://www.restpatterns.org/HTTP_Methods -->\r
153<!-- http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html -->\r
154<table style="border-spacing:15px 0px;">\r
155 <tr>\r
156 <td><a href="http://tools.ietf.org/html/rfc7231#section-4.2.1">Save Methods</a></td>\r
157 <td>"Unsave" <a href="http://tools.ietf.org/html/rfc7231#section-4.2.2">Idempotent Methods</a></td>\r
158 <td>Non-Idempotent Methods</td>\r
159 <td>Special</td>\r
160 </tr>\r
161 <tr>\r
162 <td>\r
163<input id="method_opt" type="radio" name="method" value="OPTIONS" onclick="noBody()" /> OPTIONS <br />\r
164<input id="method_get" type="radio" name="method" value="GET" onclick="noBody()" /> GET <br />\r
165<input id="method_hea" type="radio" name="method" value="HEAD" onclick="noBody()" /> HEAD <br />\r
166<input id="method_tra" type="radio" name="method" value="TRACE" /> TRACE <br />\r
167<input id="method_pro" type="radio" name="method" value="PROPFIND" /> PROPFIND <br />\r
168 </td>\r
169 <td>\r
170<input id="method_put" type="radio" name="method" value="PUT" /> PUT <br />\r
171<input id="method_del" type="radio" name="method" value="DELETE" /> DELETE <br />\r
172<input id="method_cop" type="radio" name="method" value="COPY" /> COPY <br />\r
173<input id="method_cop" type="radio" name="method" value="MOVE" /> MOVE <br />\r
174<input id="method_ppa" type="radio" name="method" value="PROPPATCH" /> PROPPATCH <br />\r
175<input id="method_unl" type="radio" name="method" value="UNLOCK" /> UNLOCK <br />\r
176 </td>\r
177 <td>\r
178<input id="method_pos" type="radio" name="method" value="POST" /> POST <br />\r
179<input id="method_pat" type="radio" name="method" value="PATCH" /> PATCH <br />\r
180<input id="method_mkc" type="radio" name="method" value="MKCOL" /> MKCOL <br />\r
181<input id="method_loc" type="radio" name="method" value="LOCK" /> LOCK <br />\r
182 </td>\r
183 <td>\r
184<input id="method_con" type="radio" name="method" value="CONNECT" /> CONNECT <br />\r
185<input id="method_userdef" type="radio" name="method" value="INVALID" /> <input id="method_name" type="text" name="method_name" value="INVALID" oninput="var elem = document.getElementById('method_userdef'); elem.checked = true; elem.value=value" /> <br />\r
186 </td>\r
187 </tr>\r
188</table>\r
189\r
190<h3>Body data</h3>\r
191<input id="body_none" type="radio" name="body" value="*" /> No body data <br />\r
192<input id="body_10" type="radio" name="body" value="1234567890" /> 10 Bytes ("1234567890") <br />\r
193<input id="body_rnd" type="radio" name="body" value="**" /> <input id="body_bytes" type="number" name="body_bytes" value="100" min="0" step="0" max="999999999" oninput="document.getElementById('body_rnd').checked = true" /> Bytes random data <br />\r
194\r
195<h3>Submit</h3>\r
196<input id="send" type="button" onclick="sendreq()" value="Send request" />\r
197\r
198</form>\r
199\r
200</body></html>\r