diff options
Diffstat (limited to 'tools/aws_config_offline/js/generator.js')
-rw-r--r-- | tools/aws_config_offline/js/generator.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tools/aws_config_offline/js/generator.js b/tools/aws_config_offline/js/generator.js new file mode 100644 index 000000000..157a0f7a1 --- /dev/null +++ b/tools/aws_config_offline/js/generator.js @@ -0,0 +1,70 @@ + +// Check for the various File API support. +if (window.File && window.FileReader && window.FileList && window.Blob) { + // Success! All the File APIs are supported. +} else { + alert('Please use a web browser that supports HTML5 file APIs.') +} + +function formatCredentialTextForHeader(credentialText) { + // Replace any CR/LF pairs with a newline character. + credentialText = credentialText.replace(/\r\n/g, '\n') + + // Add line endings for C-language variable declaration. + credentialText = credentialText.replace(/\n/g, '\\n" \\\n "') + + // Remove '\n"' from the last line of the declaration and add a semicolon. + credentialText = credentialText.slice(0, -9) + '"\n' + return credentialText +} + +function generateCertificateConfigurationHeader() { + var pemCertificateText = '' + var pemPrivateKeyText = '' + var filename = 'demo_config.h' + var outputText = '' + + var readerCertificate = new FileReader() + var readerPrivateKey = new FileReader() + + // Start certificate read + readerCertificate.readAsText(pemInputFileCertificate.files[0]) + + // Define a handler to create appropriate client certificate file text. + readerCertificate.onload = function (e) { + pemCertificateText = e.target.result + + // Add C-language variable declaration plus EOL formatting. + pemCertificateText = ' "' + formatCredentialTextForHeader(pemCertificateText) + + // Because this is async, read next file inline. + readerPrivateKey.readAsText(pemInputFilePrivateKey.files[0]) + } + + // Define a handler to create appropriate private key file text. + readerPrivateKey.onload = function (e) { + pemPrivateKeyText = e.target.result + + // Add C-language variable declaration plus EOL formatting. + pemPrivateKeyText = ' "' + formatCredentialTextForHeader(pemPrivateKeyText) + + outputText = awsIotProfileTemplate + outputText = outputText.replace('<IOTEndpoint>', '"' + document.getElementById('AWSEndpoint').value + '"') + outputText = outputText.replace('<IOTThingName>', '"' + document.getElementById('thingName').value + '"') + outputText = outputText.replace('<ClientCertificatePEM>', pemCertificateText) + outputText = outputText.replace('<ClientPrivateKeyPEM>', pemPrivateKeyText) + + // Because this is async, handle download generation inline. + var downloadBlob = new Blob([outputText], { type: 'text/plain' }) + if (window.navigator.msSaveOrOpenBlob) { + window.navigator.msSaveBlob(downloadBlob, filename) + } else { + var downloadLink = document.createElement('a') + downloadLink.href = window.URL.createObjectURL(downloadBlob) + downloadLink.download = filename + document.body.appendChild(downloadLink) + downloadLink.click() + document.body.removeChild(downloadLink) + } + } +} |