mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-20 03:35:51 +00:00
WS tool: start overhaul
This commit is contained in:
13
assets/js/apitool-methods-ws.js
Normal file
13
assets/js/apitool-methods-ws.js
Normal file
@@ -0,0 +1,13 @@
|
||||
Request("ACCOUNT METHODS");
|
||||
|
||||
Request('account_channels', {
|
||||
description: "Returns information about an account's <a href='payment-channels.html'>payment channels</a>.",
|
||||
link: "account_channels.html",
|
||||
body: {
|
||||
"id": 1,
|
||||
"command": "account_channels",
|
||||
"account": "rN7n7otQDd6FczFgLdSqtcsAUxDkw6fzRH",
|
||||
"destination_account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
|
||||
"ledger_index": "validated"
|
||||
}
|
||||
})
|
||||
156
assets/js/apitool-websocket2.js
Normal file
156
assets/js/apitool-websocket2.js
Normal file
@@ -0,0 +1,156 @@
|
||||
var commandlist = $("#command_list")
|
||||
const request_body = $(".request-body.io")
|
||||
const response_body = $(".response-body.io")
|
||||
|
||||
const GET = "GET"
|
||||
const POST = "POST"
|
||||
const PUT = "PUT"
|
||||
const DELETE = "DELETE"
|
||||
|
||||
function slugify(str) {
|
||||
str = str.replace(/^\s+|\s+$/g, '') // trim
|
||||
str = str.toLowerCase()
|
||||
|
||||
// remove accents, swap ñ for n, etc
|
||||
const from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;"
|
||||
const to = "aaaaeeeeiiiioooouuuunc------"
|
||||
for (let i=0, l=from.length ; i<l ; i++) {
|
||||
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i))
|
||||
}
|
||||
|
||||
str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
|
||||
.replace(/\s+/g, '-') // collapse whitespace and replace by -
|
||||
.replace(/-+/g, '-'); // collapse dashes
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
//Build requests
|
||||
const requests = { };
|
||||
const requestlist = [];
|
||||
function Request(name, obj) {
|
||||
if (obj === undefined) {
|
||||
requestlist.push({slug: null,name: name});//separator
|
||||
return null;
|
||||
}
|
||||
|
||||
obj.name = name;
|
||||
obj.slug = slugify(name);
|
||||
requests[obj.slug] = obj;
|
||||
requestlist.push(obj);
|
||||
|
||||
return obj;
|
||||
};
|
||||
|
||||
function generate_table_of_contents() {
|
||||
$.each(requestlist, function(i, req) {
|
||||
if (req.slug === null) {
|
||||
commandlist.append("<li class='separator'>"+req.name+"</li>");
|
||||
} else {
|
||||
commandlist.append("<li><a href='#"+req.slug+"'>"+req.name+"</a></li>");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function make_commands_clickable() {
|
||||
commandlist.children("li").click(function() {
|
||||
var cmd = slugify($(this).text().trim());
|
||||
|
||||
if (!requests[cmd]) return;
|
||||
|
||||
select_request(cmd, true);
|
||||
window.location.hash = cmd;
|
||||
|
||||
$(this).siblings().removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
});
|
||||
}
|
||||
|
||||
const cm_request = CodeMirror(request_body.get(0), {
|
||||
mode: 'javascript',
|
||||
json: true,
|
||||
smartIndent: false
|
||||
})
|
||||
|
||||
const cm_response = CodeMirror(response_body.get(0), {
|
||||
mode: 'javascript',
|
||||
json: true,
|
||||
smartIndent: false,
|
||||
readOnly: true
|
||||
})
|
||||
|
||||
function select_request(request) {
|
||||
if (request === undefined) {
|
||||
var el = commandlist.children("li:not(.separator)").eq(0)
|
||||
request = slugify(el.text())
|
||||
} else {
|
||||
var el = commandlist.find("li a[href='#"+request+"']").parent()
|
||||
}
|
||||
$(el).siblings().removeClass('selected');
|
||||
$(el).addClass('selected');
|
||||
|
||||
command = requests[request];
|
||||
|
||||
if (command.description) {
|
||||
$(".api-method-description-wrapper .blurb").html(command.description)
|
||||
$(".api-method-description-wrapper .blurb").show()
|
||||
} else {
|
||||
$(".api-method-description-wrapper .blurb").hide()
|
||||
}
|
||||
if (command.link) {
|
||||
$(".api-method-description-wrapper .api-readmore").attr("href", command.link)
|
||||
$(".api-method-description-wrapper .api-readmore").show()
|
||||
} else {
|
||||
$(".api-method-description-wrapper .api-readmore").hide()
|
||||
}
|
||||
|
||||
$(".selected_command").attr('href', DOC_BASE+command.link).text(command.name)
|
||||
|
||||
change_path(command);
|
||||
|
||||
if (command.hasOwnProperty("body")) {
|
||||
cm_request.setValue(JSON.stringify(command.body, null, 2));
|
||||
} else {
|
||||
//No body, so wipe out the current contents.
|
||||
cm_request.setValue("");
|
||||
}
|
||||
cm_request.refresh();
|
||||
|
||||
reset_response_area();
|
||||
};
|
||||
|
||||
// TODO: more stuff
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
//wait for the Requests to be populated by another file
|
||||
generate_table_of_contents();
|
||||
make_commands_clickable();
|
||||
|
||||
if (window.location.hash) {
|
||||
var cmd = window.location.hash.slice(1).toLowerCase();
|
||||
select_request(cmd);
|
||||
} else {
|
||||
select_request();
|
||||
}
|
||||
|
||||
if (urlParams["base_url"]) {
|
||||
change_base_url(urlParams["base_url"]);
|
||||
}
|
||||
|
||||
request_button.click(send_request);
|
||||
|
||||
});
|
||||
|
||||
var urlParams;
|
||||
(window.onpopstate = function () {
|
||||
var match,
|
||||
pl = /\+/g, // Regex for replacing addition symbol with a space
|
||||
search = /([^&=]+)=?([^&]*)/g,
|
||||
decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
|
||||
query = window.location.search.substring(1);
|
||||
|
||||
urlParams = {};
|
||||
while (match = search.exec(query))
|
||||
urlParams[decode(match[1])] = decode(match[2]);
|
||||
})();
|
||||
2
assets/vendor/cm-javascript.min.js
vendored
2
assets/vendor/cm-javascript.min.js
vendored
File diff suppressed because one or more lines are too long
1
assets/vendor/codemirror-with-js.min.js
vendored
Normal file
1
assets/vendor/codemirror-with-js.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
assets/vendor/codemirror.min.js
vendored
4
assets/vendor/codemirror.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -5,90 +5,96 @@
|
||||
<div class="card-header">
|
||||
<h4>API Methods</h4>
|
||||
</div>
|
||||
<ul class="card-body" id='command_list'>
|
||||
<li class='selected'><a href='#server_info'>server_info</a></li>
|
||||
<li><a href='#server_state'>server_state</a></li>
|
||||
<li><a href='#ping'>ping</a></li>
|
||||
<br/>
|
||||
<li><a href='#subscribe'>subscribe</a></li>
|
||||
<li><a href='#unsubscribe'>unsubscribe</a></li>
|
||||
<br/>
|
||||
<li><a href='#ledger'>ledger</a></li>
|
||||
<li><a href='#ledger_closed'>ledger_closed</a></li>
|
||||
<li><a href='#ledger_current'>ledger_current</a></li>
|
||||
<li><a href='#ledger_entry'>ledger_entry</a></li>
|
||||
<br/>
|
||||
<li><a href='#account_info'>account_info</a></li>
|
||||
<li><a href='#account_lines'>account_lines</a></li>
|
||||
<li><a href='#account_offers'>account_offers</a></li>
|
||||
<li><a href='#account_tx'>account_tx</a></li>
|
||||
<li><a href='#account_currencies'>account_currencies</a></li>
|
||||
<br/>
|
||||
<li><a href='#transaction_entry'>transaction_entry</a></li>
|
||||
<li><a href='#tx'>tx</a></li>
|
||||
<li><a href='#tx_history'>tx_history</a></li>
|
||||
<br/>
|
||||
<li><a href='#sign'>sign</a></li>
|
||||
<li><a href='#submit'>submit</a></li>
|
||||
<br/>
|
||||
<li><a href='#ripple_path_find'>ripple_path_find</a></li>
|
||||
<li><a href='#path_find'>path_find</a></li>
|
||||
<li><a href='#book_offers'>book_offers</a></li>
|
||||
</ul>
|
||||
<ul class="card-body" id="command_list"></ul>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<section class="container-fluid pt-3 p-md-3">
|
||||
<section class="container-fluid pt-3 p-md-3 websocket-tool" id="wstool-1">
|
||||
<h1>WebSocket Tool</h1>
|
||||
<div id='online_state'>Offline</div>
|
||||
<div id='command_wrapper'>
|
||||
<div id='command_table'>
|
||||
<div id='io_wrapper'>
|
||||
<div id='input' class='io'>
|
||||
<div id='test_warning' class='alert alert-danger' style='display:none;'>
|
||||
<h4>Test accounts only!</h4>
|
||||
<p>Never submit account secrets to a server you do not control, unless you are prepared to lose ownership of the account!</p>
|
||||
</div>
|
||||
<div style="clear:both;"></div>
|
||||
<h3 id='selected_command' title='Reference information'>server_info</h3>
|
||||
<p id='description'></p>
|
||||
<div id='invalid'>Invalid JSON</div>
|
||||
<p>JSON</p>
|
||||
<div id='request'></div>
|
||||
<div id='request_options'>
|
||||
<div class="button btn btn-outline-secondary api" id='request_button'>Send request</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id='output' class='io'>
|
||||
<h2>Response</h2>
|
||||
<div>
|
||||
<img class="loader" src="assets/img/xrp-loader-96.png" style="vertical-align: middle; display:none;"/>
|
||||
</div>
|
||||
<p id='info'></p>
|
||||
<div id='response'></div>
|
||||
<div id='tooltip'></div>
|
||||
<div id='stream_output'>
|
||||
<h3>Stream output</h3>
|
||||
<ul class='toolbar'>
|
||||
<li id='stream_show'>show</li>
|
||||
<li id='stream_pause'>pause</li>
|
||||
</ul>
|
||||
<p id='status'></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="api-method-description-wrapper">
|
||||
<h3><a href="server_info.html" class="selected_command">server_info</a></h3>
|
||||
<p class="blurb">Get information about the state of the server, formatted for human consumption.</p>
|
||||
<a class="btn btn-outline-secondary api-readmore" href="server_info.html">Read more</a>
|
||||
</div><!--/.api-method-description-wrapper-->
|
||||
<div class="api-input-area">
|
||||
<h4>Request</h4>
|
||||
<div class="request-body io"></div>
|
||||
<div class="request-options btn-toolbar" role="toolbar">
|
||||
<div class="btn-group mr-3" role="group">
|
||||
<button class="btn btn-outline-secondary send-request">Send request</button>
|
||||
<div class="input-group loader" style="display:none;">
|
||||
<span class="input-group-append">
|
||||
<img src="assets/img/xrp-loader-96.png" height="24" width="24" />
|
||||
</span><!--/.input-group-append-->
|
||||
</div><!--/.input-group.loader-->
|
||||
</div><!--/.btn-group-->
|
||||
<div class="btn-group" role="group">
|
||||
<button class="btn btn-outline-secondary connection" data-toggle="modal" data-target="#wstool-1-connection-settings">Online (Main Net)</button>
|
||||
<button class="btn btn-outline-secondary permalink">Permanlink</button>
|
||||
<button class="btn btn-outline-secondary curl">cURL</button>
|
||||
</div><!--/.btn-group-->
|
||||
</div><!--/.request-options.btn-toolbar-->
|
||||
</div><!--/.api-input-area-->
|
||||
|
||||
<div class="api-response-area">
|
||||
<h4>Responses</h4>
|
||||
<div class="response-body io"></div>
|
||||
</div><!--/.api-response-area-->
|
||||
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block endbody %}
|
||||
<link rel='stylesheet' type='text/css' href='assets/css/api-tools.css'/>
|
||||
<link rel='stylesheet' type='text/css' href='assets/vendor/codemirror.css'/>
|
||||
<script type='text/javascript' src='assets/js/es5-shim.js'></script>
|
||||
<script type='text/javascript' src='assets/vendor/codemirror.min.js'></script>
|
||||
<script type='text/javascript' src='assets/vendor/cm-javascript.min.js'></script>
|
||||
<script type='text/javascript' src='assets/js/ripple-0.11.0-min.js'></script>
|
||||
<script type='text/javascript' src='assets/js/apitool-websocket.js'></script>
|
||||
<!-- Modals for settings -->
|
||||
<div class="modal fade" id="wstool-1-connection-settings" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Connection Settings</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="exampleRadios" id="wstool-1-connection-s1" value="wss://s1.ripple.com/" checked>
|
||||
<label class="form-check-label" for="wstool-1-connection-s1">
|
||||
s1.ripple.com (Main Net Public Server)
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="exampleRadios" id="wstool-1-connection-s2" value="wss://s2.ripple.com/">
|
||||
<label class="form-check-label" for="wstool-1-connection-s2">
|
||||
s2.ripple.com (Full History Public Server)
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="exampleRadios" id="wstool-1-connection-testnet" value="wss://s.altnet.rippletest.net:51233/">
|
||||
<label class="form-check-label" for="wstool-1-connection-testnet">
|
||||
s.altnet.rippletest.net (Test Net Public Server)
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="exampleRadios" id="wstool-1-connection-localhost" value="ws://localhost:6006/">
|
||||
<label class="form-check-label" for="wstool-1-connection-localhost">
|
||||
localhost:6006 (Local <code>rippled</code> Server on port 6006) <br/>
|
||||
<small>(Requires that you <a href="install-rippled.html">run <code>rippled</code></a> on this machine with default WebSocket settings)</small>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
|
||||
</div><!--/.modal-footer-->
|
||||
</div><!--/.modal-content-->
|
||||
</div><!--/.modal-dialog-->
|
||||
</div><!--/.modal-->
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="assets/vendor/codemirror.css"/>
|
||||
<script type="text/javascript" src="assets/vendor/codemirror-with-js.min.js"></script>
|
||||
<script type="text/javascript" src="assets/js/apitool-websocket2.js"></script>
|
||||
<script type="text/javascript" src="assets/js/apitool-methods-ws.js"></script>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user