![JAR search and dependency download from the Maven repository](/logo.png)
guru.nidi.raml.doc.static.tryout.js Maven / Gradle / Ivy
rd.addHeader = function (e) {
var tr = rd.dom.findParent(e, 'tr'),
next = document.createElement('tr');
next.innerHTML = '' +
' ' +
' ' +
' ' +
' ' +
' ';
rd.dom.insertAfter(tr, next);
rd.setHeaderName(next.querySelector('select'));
};
rd.setHeaderName = function (e) {
var input = rd.dom.nextSiblingWithClass(e.parentNode, 'additional-header').querySelector('input');
input.name = 'h_' + e.value;
};
rd.removeHeader = function (e) {
var tr = rd.dom.findParent(e, 'tr');
tr.parentNode.removeChild(tr);
};
rd.showModifiedTry = function (e) {
var tryModified = rd.dom.nextSiblingWithClass(e.parentNode.parentNode.firstChild, 'try-modified');
tryModified.style.display = 'inline';
};
rd.tryOutModified = function (button, type, path, securitySchemes) {
rd.tryOut(button, type, path, securitySchemes, true);
};
rd.tryOut = function (button, type, path, securitySchemes, useModifiedUrl) {
var response = rd.dom.nextSiblingWithClass(button, 'response'),
tryModified = rd.dom.nextSiblingWithClass(button, 'try-modified');
if (!useModifiedUrl) {
tryModified.style.display = 'none';
}
showLoader(true);
showResponse();
sendRequest(createRequest(rd.baseUri + path, securitySchemes, useModifiedUrl), handleResponse);
function createRequest(uri, securitySchemes, useModifiedUrl) {
var i, prop, url,
req = {
type: 'text', uri: uri, body: null, query: '', header: {}
},
form = rd.dom.findParent(button, 'form'),
creds = rd.items.load('creds');
if (creds) {
if (securitySchemes.indexOf(creds.name + ',') >= 0) {
for (prop in creds.data) {
setRequestValue(req, {name: prop, value: creds.data[prop]});
}
}
}
for (i = 0; i < form.elements.length; i++) {
setRequestValue(req, form.elements[i]);
}
if (useModifiedUrl) {
url = form.requestUrl.value;
i = url.indexOf('?');
if (i < 0) {
req.uri = url;
req.query = '';
} else {
req.uri = url.substring(0, i);
req.query = url.substring(i + 1);
}
}
return req;
}
function setRequestValue(req, elem) {
var r;
if (elem.value) {
if (r = rd.string.rest(elem.name, 'q_')) {
req.query += encodeURIComponent(r) + '=' + encodeURIComponent(elem.value) + '&';
} else if (r = rd.string.rest(elem.name, 'h_')) {
req.header[r] = elem.value;
} else if (r = rd.string.rest(elem.name, 'u_')) {
req.uri = req.uri.replace('{' + r + '}', elem.value);
} else if (rd.dom.hasClass(elem, 'request') && rd.dom.hasClass(elem, 'contentType')) {
req.header['Content-Type'] = elem.value;
} else if (rd.string.startsWith(elem.name, 'body') && rd.dom.findParent(elem, 'tr').style.display === 'table-row') {
req.body = elem.value;
}
}
}
function showLoader(show) {
var loader = rd.dom.nextSiblingWithClass(button, 'loader');
loader.style.display = show ? 'inline' : 'none';
}
function hideLoader() {
showLoader(false);
}
function showResponse() {
var response = rd.dom.nextSiblingWithClass(button, 'response');
response.style.display = 'block';
}
function sendRequest(r, handler) {
var h, url = (r.uri + '?' + r.query).replace(/[?&]$/, ''),
req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (req.readyState === 4) {
handler(r, url, req);
}
};
req.addEventListener("load", hideLoader, false);
req.addEventListener("error", hideLoader, false);
req.addEventListener("abort", hideLoader, false);
req.open(type, url, true);
req.responseType = r.type;
for (h in r.header) {
req.setRequestHeader(h, r.header[h]);
}
showRequestUrl(url);
showRequestHeaders(r.header);
showResponseCode('');
showResponseHeaders('');
showResponseImage();
showResponseText();
try {
req.send(r.body);
} catch (e) {
alert('Could not send request: ' + e);
}
}
function handleResponse(r, url, req) {
var mimeType = req.getResponseHeader('Content-Type'),
isImage = rd.string.startsWith(simpleMimeType(mimeType), 'image/');
if (isImage && r.type !== 'arraybuffer') {
r.type = 'arraybuffer';
sendRequest(r, handleResponse);
return;
}
showResponseCode(req.status + ' ' + req.statusText);
showResponseHeaders(req.getAllResponseHeaders());
if (isImage) {
bodyTabs('preview', false, true);
showResponseImage(mimeType, req.response);
} else {
bodyTabs('response', true, simpleMimeType(mimeType) === 'text/html');
showResponseText(mimeType, req.responseText);
}
function bodyTabs(select, showResponse, showPreview) {
var resContent = response.querySelector('.responseContent'),
responseTab = response.querySelector('.tab.response'),
previewTab = response.querySelector('.tab.preview');
rd.showTab(resContent, select);
responseTab.style.display = showResponse ? 'inline' : 'none';
previewTab.style.display = showPreview ? 'inline' : 'none';
}
}
function showRequestUrl(url) {
response.querySelector('[name=requestUrl]').value = url;
}
function showRequestHeaders(headers) {
var h, str = '';
for (h in headers) {
str += '' + h + '' + headers[h] + '';
}
response.querySelector('[name=requestHeaders]').innerHTML = str;
}
function showResponseCode(code) {
response.querySelector('[name=responseCode]').firstChild.nodeValue = code;
}
function showResponseHeaders(headers) {
var i, pos, str = '', parts = headers.split('\n');
for (i = 0; i < parts.length; i++) {
pos = parts[i].indexOf(':');
if (pos > 0) {
str += '' + parts[i].substring(0, pos) + '' + parts[i].substring(pos + 1) + '';
}
}
response.querySelector('[name=responseHeaders]').innerHTML = str;
}
function showResponseImage(mimeType, data) {
var resImage = response.querySelector('[name=responseImage]');
if (data) {
resImage.src = 'data:' + mimeType + ';base64,' + btoa(String.fromCharCode.apply(null, new Uint8Array(data)));
resImage.style.display = 'block';
} else {
resImage.style.display = 'none';
}
}
function showResponseText(mimeType, text) {
var resBody = response.querySelector('[name=responseBody]'),
resHtml = response.querySelector('[name=responseHtml]');
if (text) {
if (text.length > 100000) {
text = text.substring(0, 100000) + '...';
}
resBody.style.display = 'block';
if (isJson(mimeType)) {
resBody.innerHTML = PR.prettyPrintOne(js_beautify(text));
linkify(resBody);
} else {
resBody.firstChild.nodeValue = text;
if (simpleMimeType(mimeType) === 'text/html') {
resHtml.style.display = 'block';
resHtml.style.height = (Math.max(resBody.offsetWidth, resHtml.offsetWidth) * .75) + 'px';
resHtml.contentDocument.write(text);
resHtml.contentDocument.close();
}
}
} else {
resBody.style.display = 'none';
resHtml.style.display = 'none';
}
}
function linkify(resBody) {
var i, p, a, url, known, strings = resBody.querySelectorAll('.str');
for (i = 0; i < strings.length; i++) {
var content = strings[i].firstChild.nodeValue;
if (content.substring(0, 5) === '"http') {
url = content.substring(1, content.length - 1);
known = knownLink(url);
if (known) {
url = document.location.protocol + '//' + document.location.host + document.location.pathname + '/' + rd.relPath + known.url + '.html?';
for (p in known.query) {
url += 'q_' + encodeURIComponent(p) + '=' + encodeURIComponent(known.query[p]) + '&';
}
for (p in known.vars) {
url += 'u_' + encodeURIComponent(p) + '=' + encodeURIComponent(known.vars[p]) + '&';
}
url += 'method=get&run';
}
a = document.createElement('a');
a.setAttribute('href', url);
a.setAttribute('target', '_blank');
rd.dom.wrap(strings[i], a);
strings[i].className = 'link';
}
}
}
function knownLink(url) {
var i, j, patternParts, res, match, parts, qPos;
if (url.substring(0, rd.baseUri.length) === rd.baseUri) {
url = url.substring(rd.baseUri.length);
qPos = url.indexOf('?');
parts = (qPos < 0 ? url : url.substring(0, qPos)).split('/');
for (i = 0; i < rd.urls.length; i++) {
patternParts = rd.urls[i].split('/');
if (patternParts.length === parts.length) {
res = {url: rd.urls[i], vars: {}, query: rd.query.parse(url.substring(qPos))};
match = true;
for (j = 0; j < patternParts.length; j++) {
if (patternParts[j].charAt(0) === '{') {
res.vars[patternParts[j].substring(1, patternParts[j].length - 1)] = parts[j];
} else if (patternParts[j] !== parts[j]) {
match = false;
}
}
if (match) {
return res;
}
}
}
}
}
function isJson(mimeType) {
mimeType = simpleMimeType(mimeType);
return mimeType === 'application/json' || mimeType.substring(mimeType.length - 5) === '+json';
}
function simpleMimeType(mimeType) {
mimeType = mimeType || '';
var pos = mimeType.indexOf(';');
return pos >= 0 ? mimeType.substring(0, pos) : mimeType;
}
};
rd.login = function (button, name) {
var i, elem, data = {},
form = rd.dom.findParent(button, 'form');
for (i = 0; i < form.elements.length; i++) {
elem = form.elements[i];
data[elem.name] = elem.value;
}
rd.items.store('creds', {name: name, data: data});
rd.initSecData(button);
};
rd.logout = function (button, global) {
rd.items.remove('creds');
if (global) {
rd.initGlobalSecData(button);
} else {
rd.initSecData(button);
}
};
rd.initSecData = function (script) {
var i, elem,
form = rd.dom.findParent(script, 'form'),
data = rd.items.load('creds');
if (data) {
data = data.data;
}
for (i = 0; i < form.elements.length; i++) {
elem = form.elements[i];
if (elem.name === 'login') {
elem.style.display = data ? 'none' : 'inline';
} else if (elem.name === 'logout') {
elem.style.display = data ? 'inline' : 'none';
}
if (data) {
elem.value = data[elem.name];
}
}
};
rd.initGlobalSecData = function (script) {
var data = rd.items.load('creds'),
logout = rd.dom.findParent(script, 'div').querySelector('[name=logout]');
logout.style.display = data ? 'inline' : 'none';
};
© 2015 - 2025 Weber Informatics LLC | Privacy Policy