Adds non-working script to upload/download document from S3

Works in local test, does not work on POCloud due to the scripts not being in the header file
This commit is contained in:
Patrick McDonagh
2017-08-17 17:46:04 -05:00
parent 1e49613c51
commit ae0e6c4918
3 changed files with 170 additions and 0 deletions

12
HTML/Files.html Normal file
View File

@@ -0,0 +1,12 @@
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.92.0.min.js"></script>
<script src="https://s3.amazonaws.com/pocloud-scripts/s3files.js"></script>
<div id="fileApp"></div>
<script>
function check(){
console.log('CHECKING DEVICE <%=channels["flowmonitor.low_flow_gpm"].techName %>')
checkDevice('<%=channels["flowmonitor.low_flow_gpm"].techName %>');
};
setTimeout(check, 10000);
</script>

16
HTML/Files_test.html Normal file
View File

@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
<head>
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.92.0.min.js"></script>
<!-- <script src="https://s3.amazonaws.com/pocloud-scripts/s3files.js"></script> -->
<script src="./s3files.js"></script>
</head>
<body>
<div id="fileApp"></div>
<script>
// checkDevice('<%=channels["flowmonitor.low_flow_gpm"].techName %>');
checkDevice("flowmonitor_[c4:93:00:03:69:bc:01:40]");
</script>
</body>
</html>

142
HTML/s3files.js Normal file
View File

@@ -0,0 +1,142 @@
var dataBucketName = 'pocloud-data';
var bucketRegion = 'us-east-1';
var IdentityPoolId = 'us-east-1:4ba4f2d0-ff79-446e-a510-ac16e411d3cc';
AWS.config.update({
region: bucketRegion,
credentials: new AWS.CognitoIdentityCredentials({
IdentityPoolId: IdentityPoolId
})
});
function getHtml(template) {
return template.join('\n');
}
var s3 = new AWS.S3({
// apiVersion: '2006-03-01',
params: {Bucket: dataBucketName}
});
function fixDeviceId(deviceId){
deviceId = deviceId.replace(/:/g, "");
deviceId = deviceId.replace("[", "");
deviceId = deviceId.replace("]", "");
return deviceId;
}
function checkDevice(deviceId) {
deviceId = fixDeviceId(deviceId);
// deviceId = deviceId.trim();
if (!deviceId) {
return alert('Device names must contain at least one non-space character.');
}
if (deviceId.indexOf('/') !== -1) {
return alert('Device names cannot contain slashes.');
}
var deviceKey = encodeURIComponent(deviceId) + '/';
s3.headObject({Key: deviceKey}, function(err, data) {
if (!err) {
// return alert('Device already exists.');
return viewDevicefiles(deviceId);
}
if (err.code !== 'NotFound') {
return alert('There was an error creating your device: ' + err.message);
}
s3.putObject({Key: deviceKey}, function(err, data) {
if (err) {
return alert('There was an error creating your device: ' + err.message);
}
// alert('Successfully created device.');
return viewDevicefiles(deviceId);
});
});
}
function viewDevicefiles(deviceId) {
deviceId = fixDeviceId(deviceId);
var deviceFileKey = encodeURIComponent(deviceId) + '//';
s3.listObjects({Prefix: deviceFileKey}, function(err, data) {
if (err) {
return alert('There was an error viewing your device: ' + err.message);
}
// `this` references the AWS.Response instance that represents the response
var href = this.request.httpRequest.endpoint.href;
var bucketUrl = href + dataBucketName + '/';
console.log(data);
var files = data.Contents.map(function(file) {
var fileKey = file.Key;
var fileUrl = bucketUrl + encodeURIComponent(fileKey);
var fileFilename = fileKey.replace(deviceFileKey, '');
var fileSize = file.Size / 1000; // kB
var lastModified = file.LastModified;
console.log(file);
return getHtml([
'<tr>',
'<td><a href="https://s3.amazonaws.com/' + dataBucketName + '/' + fileKey + '">' + fileFilename + '</a></td>',
'<td>' + fileSize + ' kB</td>',
'<td>' + lastModified + '</td>',
'<td><button onclick="deleteFile(\'' + deviceId + "','" + fileKey + '\')">Delete</button>',
'</tr>'
]);
});
var message = files.length ?
'<h2>File List</h2>' :
'<p>You do not have any files for this device. Please add files.</p>';
var htmlTemplate = [
'<h2>',
'DeviceId: ' + deviceId,
'</h2>',
message,
'<div class="row">',
'<table class="table">',
'<thead><tr><th>Filename</th><th>File Size</th><th>Last Modified</th><th></th></thead>',
'<tbody>',
getHtml(files),
'</tbody>',
'</table>',
'</div>',
'<input id="fileupload" type="file" accept="*">',
'<button id="addfile" onclick="addFile(\'' + deviceId +'\')">',
'Add File',
'</button>',
]
document.getElementById('fileApp').innerHTML = getHtml(htmlTemplate);
});
}
function addFile(deviceId) {
deviceId = fixDeviceId(deviceId);
var files = document.getElementById('fileupload').files;
if (!files.length) {
return alert('Please choose a file to upload first.');
}
var file = files[0];
var fileName = file.name;
var deviceFileKey = encodeURIComponent(deviceId) + '//';
var fileKey = deviceFileKey + fileName;
s3.upload({
Key: fileKey,
Body: file,
ACL: 'public-read'
}, function(err, data) {
if (err) {
return alert('There was an error uploading your file: ', err.message);
}
alert('Successfully uploaded file.');
viewDevicefiles(deviceId);
});
}
function deleteFile(deviceId, fileKey) {
deviceId = fixDeviceId(deviceId);
s3.deleteObject({Key: fileKey}, function(err, data) {
if (err) {
return alert('There was an error deleting your file: ', err.message);
}
alert('Successfully deleted file.');
viewDevicefiles(deviceId);
});
}