LTI Launch Test - Class -dev1
Whenever a launch is triggered, the configuration parameters are applied, new nonce and timestamp values are obtained, and a new OAuth signature is calculated. The "Refresh" button does the same, without triggering a launch.
Current support is for LTI 1.0/1.1
Adapted from Lance's implementation and customized for testing dashboards
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/hmac-sha1.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/enc-base64.js"></script>
<p><em>Remember to click on "Refresh" at the bottom of the form before launching!!</em>
</p>
<h2>LTI configuration parameters</h2>
<form id="ltiConfigurationForm" onsubmit="updateLtiLaunchForm(); return false;">
<ul>http://jsfiddle.net/prakgarnly/sd20tL6b/56/#run
<li>
<label>Launch URL:
<select id="launchUrl" name="launchUrl">
<option value="https://master-dev.intellify.io/ltilaunch/">MDev</option>
<option value="https://hmh2.intellifylearning.com/ltilaunch/">HMH2</option>
<option value="https://hmhprod2.intellifylearning.com/ltilaunch/">HMHProd2</option>
<option value="https://dev1.intellifylearning.com/ltilaunch/">Dev1</option>
<option value="https://hmhprod1.intellifylearning.com/ltilaunch/">HMHProd1</option>
</select>
</label>
</li>
<li>
<label>View ID:
<!-- <input id="viewId" value="" type="text" />
-->
<select id="viewId" name="viewId">
<option value="5617ef920cf2bffa80028a9c">SRI Prod</option>
<option value="56c1501d0cf2d0dccad5e0bf">SRI WC</option>
<option value="55f9c01a0cf2011135f8754f">SPI Prod</option>
<option value="56a792a30cf285c7fc5f1975">SPI WC</option>
<option value="561dc1310cf29cf10bd93079">R180U Prod</option>
<option value="561dc1310cf29cf10bd93079">R180U WC</option>
</select>
</label>
</li>
<li>
<label>Key:
<input id="key" value="" type="text" size="80" />
</label>
</li>
<li>
<label>Secret:
...
CSS
input:read-only {
background-color: #D6D6D6;
}
em {
background-color: #FFD666;
}
label.sri {
background-color: #FFD666;
}
input#launchUrl {
width: 90%
}
input{
width: 60%;
}
JavaScript
(function () {
window.onload = function () {
// spi class
$('#launchUrl').val('https://dev1.intellifylearning.com/ltilaunch/');
$('#viewId').val('55f9c01a0cf2011135f8754f');
$('#key').val('DR3O_WSDQgyNXen3au5Qmg');
$('#secret').val('87af2996-edf6-4d0e-a3e2-df2b85b2d4b1');
$('#custom_siteId').val('h900000031');
$('#custom_classId').val('1bu96flg6jj9ul1103967vhk_v8q9qq0');
$('#custom_studentId').val('');
updateLtiLaunchForm();
};
this.updateLtiLaunchForm = function () {
var launchUrl = $('#launchUrl').val() + $('#viewId').val();
var encodedSecret = encodeURIComponent($('#secret').val()) + '&';
var $ltiLaunchForm = $('#ltiLaunchForm');
$ltiLaunchForm.attr('action', launchUrl);
$('#oauth_consumer_key').val($('#key').val());
$('#oauth_timestamp').val(Math.floor(new Date().getTime() / 1000));
$('#oauth_nonce').val(uniqid('', true));
var fields = [];
$('input[type="text"]', $ltiLaunchForm).not('[name="oauth_signature"]').not('[name="custom_param_1_label"]').each(function () {
var input = $(this);
fields.push(input.attr('name') + '=' + rawurlencode(input.val()));
});
$('select', $ltiLaunchForm).not('[name="oauth_signature"]').not('[name="custom_param_1_label"]').each(function () {
var input = $(this);
fields.push(input.attr('name') + '=' + rawurlencode(input.val()));
});
console.log(fields)
var message = 'POST&' + encodeURIComponent(launchUrl) + '&' + rawurlencode(fields.sort().join('&'));
console.log(message);
var oauthSignature = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(message, encodedSecret));
$('#oauth_signature').val(oauthSignature);
};
this.rawurlencode = function (str) {
str = (str + '').toString();
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g,...