%PDF- %PDF-
| Direktori : /home/opti/workflow/node_modules/aws-sdk/test/browser/sample/ |
| Current File : /home/opti/workflow/node_modules/aws-sdk/test/browser/sample/console.html |
<!DOCTYPE html>
<html>
<head>
<title>AWS SDK for JavaScript - Console</title>
<link rel="stylesheet" href="css/smoothness/jquery-ui-1.10.1.custom.css" />
<style type="text/css">
body { font-family: Helvetica, Arial, sans-serif; font-size: 9pt; }
.padding { padding: 12px; }
#header { background: #eee; font-size: 1.2em; }
.selectorControl * { height: 200px; }
#operationSelector { border: 1px solid #ccc; }
#operationSelector h3 { padding: 0; margin-top: 0; }
#serviceSelector { width: 20%; }
#operationSelector { width: 20%; }
#operationData { width: 50%; position: relative; top: 7px; font-family: Monaco, fixed; }
.tableOutput { width: 100%; overflow: scroll; }
.history-entry { margin-bottom: 12px; }
.history-entry pre.output { background: #eee; border: 1px solid #ccc; overflow: scroll; height: 300px; }
.grid { clear: right; }
.halfwidth { float: left; width: 48%; margin-right: 6px; }
.halfwidth:last-child { margin-right: 0px; }
.break { clear: both; }
table, th, td { border: 1px solid #ccc; border-collapse: collapse; vertical-align: top; }
#login-buttons { float: right; }
/* jquery-ui overrides */
:focus { outline-width: 0; }
</style>
<script type="text/javascript" src="js/jquery-1.9.1.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.10.1.custom.min.js"></script>
<script type="text/javascript" src="../../../dist/aws-sdk-all.js"></script>
<script type="text/javascript" src="appinfo.js"></script>
<script type="text/template" id="template-historyEntry">
<div id="history-{entry}" class="history-entry">
<ul>
<li>
<a href="#history-tab-{entry}">
<img src="img/loading.gif"/>
{service}.{operation}() — {date}
</a>
</li>
<li><a href="#history-details-tab-{entry}">Details</a></li>
<li><a href="#history-table-tab-{entry}">Tabular (Experimental)</a></li>
</ul>
<div id="history-tab-{entry}">
<div class="grid">
<div class="halfwidth">
<h3>Response</h3>
<pre class="padding output operationResponse"></pre>
</div>
<div class="halfwidth">
<h3>Request</h3>
<pre class="padding output operationRequest"></pre>
</div>
</div>
<div class="break"></div>
</div>
<div id="history-details-tab-{entry}">
<div class="grid">
<div class="halfwidth">
<h3>Request Details</h3>
<pre class="padding output operationRequestDetails"></pre>
</div>
<div class="halfwidth">
<h3>Response Details</h3>
<pre class="padding output operationResponseDetails"></pre>
</div>
</div>
<div class="break"></div>
</div>
<div id="history-table-tab-{entry}">
<div class="tableOutput"></div>
</div>
</div>
</script>
<script type="text/javascript">
services = {};
currentServiceVar = null;
currentService = null;
currentOperation = null;
data = null;
error = null;
response = null;
requestCount = 0;
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
};
function guid() {
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
/**
* Turns a JS object into a table representation using a set of hints
* to detect the key/value structure.
*
* Assume EC2 for now
*/
function tableView(items, resultKey) {
var table = $('<table/>').attr('cellpadding', 5);
// transposed table for structures
if (!Array.isArray(items)) {
for (var key in items) {
var row = $('<tr/>');
$('<th/>').text(key).appendTo(row);
$('<td/>').text(items[key]).appendTo(row);
row.appendTo(table);
}
return table;
}
if (items.length === 0) return '';
var i;
// first build the headers
var row = $('<tr/>');
var keys = typeof items[0] === 'object' ? Object.keys(items[0]) : [resultKey];
for (i = 0; i < keys.length; i++) {
$('<th/>').text(keys[i]).appendTo(row);
}
row.appendTo(table);
for (i = 0; i < items.length; i++) {
row = $('<tr/>');
if (typeof items[i] === 'object') {
for (var key in items[i]) {
var value = items[i][key];
if (typeof value === 'object') { // complex type
value = tableView(value);
}
$('<td/>').html(value).appendTo(row);
}
} else {
$('<td/>').html(items[i]).appendTo(row);
}
row.appendTo(table);
}
return table;
}
function loadOperationsForService(svc) {
if (currentServiceVar === svc) return;
currentServiceVar = svc;
currentService = services[svc];
$('#operationSelector').empty();
for (var key in currentService.api.operations) {
var el = $('<option/>').attr('value', key).text(key);
$('#operationSelector').append(el).change(function() {
loadOperation($(this).val());
});
}
}
function loadOperation(operation) {
if (currentOperation === operation) return;
currentOperation = operation;
var input = currentService.api.operations[operation].input.members;
$('#operationData').val(JSON.stringify(input, null, 2));
}
function loadServices() {
$('#serviceSelector').empty();
for (var key in AWS) {
if (!AWS[key].prototype) continue;
if (AWS[key].prototype.constructor.__super__.name === 'Service') {
var svcVarName = key.toLowerCase();
var svc = services[svcVarName] = window[svcVarName] = new AWS[key]();
var fullName = svc.api.serviceAbbreviation || svc.api.serviceFullName;
var el = $('<option/>').attr('value', svcVarName).text(fullName);
$('#serviceSelector').append(el).change(function () {
loadOperationsForService($(this).val());
});
}
}
}
function executeOperation() {
var params = JSON.parse($('#operationData').val() || '{}');
currentService[currentOperation](params).send();
}
function template(name, options) {
var html = $('#template-' + name).html();
html = html.replace(/\{(.+?)\}/g, function(matches, key) {
return key in options ? options[key] : '';
});
return html;
}
function addHistoryEntry(req) {
req.id = guid();
// add entry to page
$('#history :first').tabs('option', 'active', false);
$('#history').prepend(template('historyEntry', {
operation: req.operation,
service: req.service.api.endpointPrefix,
entry: req.id,
date: new Date(),
}));
var reqHttpData = JSON.stringify(req.httpRequest, null, 2);
var entry = $('#history-' + req.id);
entry.tabs({collapsible: true});
entry.find('.operationRequestDetails').text(reqHttpData);
}
function updateHistoryEntry(resp) {
var req = resp.request;
var entry = $('#history-' + req.id);
var params = JSON.stringify(req.params);
var time = new Date().getTime();
var elapsed = (time - (resp.requestStarted || time)) / 1000;
var service = req.service.api.endpointPrefix;
var statusCode = resp.httpResponse.statusCode || 'ERR';
var retryCount = resp.retryCount || 0;
var operation = req.operation;
var info = statusCode + ' ' + elapsed + 's ' + retryCount + ' retries';
var data;
if (resp.error) {
data = resp.error.message + '\n' + resp.error.stack;
} else {
data = AWS.util.copy(resp.data);
if (data.Body) {
delete data.Body.parent; // remove circular ref
data.Body = data.Body.toString();
}
data = JSON.stringify(data, null, 2);
var tableData = resp.data;
var resultKey = '';
entry.find('.tableOutput').html(tableView(tableData, resultKey));
}
// debug to console
var opInfo = service + '.' + operation + '(' + params + ')';
console.log('[AWS ' + info + ']', opInfo);
entry.find('.operationResponse').text(data);
entry.find('.operationRequest').text(params);
var link = entry.children('ul').find('a').first();
link.text('[' + info + '] ' + link.text());
if (resp.httpResponse.body) {
delete resp.httpResponse.body.parent; // remove circular reference
resp.httpResponse.body = resp.httpResponse.body.toString();
}
var respHttpData = JSON.stringify(resp.httpResponse, null, 2);
entry.find('.operationResponseDetails').text(respHttpData);
}
function startRequest(resp) {
addHistoryEntry(resp.request);
resp.requestStarted = new Date().getTime();
}
function endRequest(resp) {
// set window properties for console debugging
window.response = resp;
window.data = resp.data;
window.error = resp.error;
window.requestCount++;
// update history info
try {
updateHistoryEntry(resp);
} catch (err) {
console.log(err.message);
console.log(err.stack);
}
}
function loadEvents() {
AWS.events.
on('send', startRequest).
on('complete', endRequest);
}
function loaded() {
$('#selectOperation').tabs({collapsible: true});
$('#executeOperation').click(executeOperation);
$('#header .title').text('AWS SDK for JavaScript ' + AWS.VERSION);
}
function init() {
AWS.config.update({region: 'us-east-1'});
loadEvents();
loaded();
}
function loadIDPCredentials(provider, arn, accessToken) {
var params = {
ProviderId: provider,
RoleArn: arn,
WebIdentityToken: accessToken
};
if (provider === null) delete params.ProviderId;
AWS.config.credentials = new AWS.WebIdentityCredentials(params);
AWS.config.credentials.get(function (err) {
if (err) {
console.log(err.message);
console.log(err.stack);
}
else loadServices();
});
}
$(init);
</script>
</head>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId: window.appInfo.facebook.appId,
status: false,
xfbml: false
});
FB.Event.subscribe('auth.authResponseChange', function(response) {
if (response.status === 'connected') {
loadIDPCredentials('graph.facebook.com',
window.appInfo.facebook.roleArn,
response.authResponse.accessToken);
}
});
FB.getLoginStatus();
$('#login-facebook').click(function() { FB.login() });
};
// Load the SDK asynchronously
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div id="amazon-root"></div>
<script type="text/javascript">
window.onAmazonLoginReady = function() {
amazon.Login.setClientId(window.appInfo.amazon.appId);
$('#login-amazon').click(function() {
amazon.Login.authorize({scope: 'profile'}, function(response) {
if (!response.error) {
loadIDPCredentials('www.amazon.com',
window.appInfo.amazon.roleArn,
response.access_token);
}
});
});
};
(function(d) {
var a = d.createElement('script'); a.type = 'text/javascript';
a.async = true; a.id = 'amazon-login-sdk';
a.src = 'https://api-cdn.amazon.com/sdk/login1.js';
d.getElementById('amazon-root').appendChild(a);
})(document);
</script>
<script type="text/javascript">
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/client:plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
function loginToGoogle(response) {
if (!response.error) {
loadIDPCredentials(null, window.appInfo.google.roleArn, response.id_token);
}
}
</script>
<div id="header" class="padding">
<span class="title"></span>
<div id="login-buttons">
<button id="login-amazon">Login with Amazon</button>
<button id="login-facebook">Login with Facebook</button>
<button id="login-google">
<span
class="g-signin"
data-height="short"
data-callback="loginToGoogle"
data-clientid="156058024465.apps.googleusercontent.com"
data-cookiepolicy="single_host_origin"
data-requestvisibleactions="http://schemas.google.com/AddActivity"
data-scope="https://www.googleapis.com/auth/plus.login">
</span>
</button>
</div>
</div>
<div id="selectOperation">
<ul>
<li><a href="#selectOperationTab">Select an operation</a></li>
</ul>
<div id="selectOperationTab">
<div class="selectorControl">
<select size="10" id="serviceSelector"></select>
<select size="10" id="operationSelector"></select>
<textarea id="operationData"></textarea>
</div>
<div class="runControl">
<button id="executeOperation">Run</button>
</div>
</div>
</div>
<h2>Requests</h2>
<div id="history">
</div>
</body>
</html>