LTI Launch Test- Student - 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:
<!-- <input id="launchUrl" value="" type="text" /> -->
<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://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="5661b62d0cf2c1c8405734a5">SRI Prod</option>
<option value="56c1481d0cf2d0dccad5dd42">SRI WC</option>
<option value="561dc1ba0cf2bffa8004ff4a">SPI Prod</option>
<option value="56b39afd0cf269f960a8f692">SPI WC</option>
<option value="561dc1310cf29cf10bd93079">R180U Prod</option>
</select>
</label>
</li>
<li>
<label>Key:
<input id="key" value="" type="text" size="80" />
</label>
</li>
<li>
<label>Secret:
<input id="secret" value="" type="text" size="80" />
</label>
</li>
</ul>
<button...
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 () {
// Local testing (Instructor Only Dashbaord)
// spi student
$('#launchUrl').val('https://dev1.intellifylearning.com/ltilaunch/');
$('#viewId').val('561dc1ba0cf2bffa8004ff4a');
$('#key').val('yScTs-BpQVaSg0PIlDlfzw');
$('#secret').val('22ab106d-52c7-418f-a35a-1b1adb3c43bc');
$('#custom_siteId').val('h900000031');
$('#custom_classId').val('1bu96flg6jj9ul1103967vhk_v8q9qq0');
$('#custom_studentId').val('oic7nalqmamjl8ghs7ctmsfu_v8q9qq0');
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 +...