working init update

master
Chakib Benziane 5 years ago
parent bd8ad2c428
commit 56d6e48ad4

@ -17,6 +17,7 @@
"vue-template-compiler": "^2.6.9"
},
"dependencies": {
"babel-polyfill": "^6.26.0",
"vue": "^2.6.8",
"vue-hot-reload-api": "^2.3.3"
},

@ -1 +1 @@
Subproject commit 1a72909f51a76b41fc4824f0eefef1cf503c8d0e
Subproject commit 423ba0e52ceb70b685af6118eead2d9d77e25469

@ -0,0 +1,65 @@
import 'babel-polyfill';
let apiPort = '8880'
if (process.env.API_PORT !== undefined) {
apiPort = process.env.API_PORT;
}
function getEndpoint (path) {
return new URL(path, apiEndpoint).toString()
}
const endPoints = {
get upload () {
return getEndpoint('upload')
}
}
const apiEndpoint = function() {
let currentLoc = self.location;
let endpoint = new URL(currentLoc);
endpoint.port = apiPort;
return endpoint.toString()
}()
class Upload {
constructor(files) {
this.files = Array.from(files)
this.timestamp = new Date()
}
get payload() {
return {
files: this.files,
timestamp: this.timestamp,
}
}
async create() {
let req = new Request(endPoints.upload, {
method: 'POST',
body: JSON.stringify(this.payload)
})
//let result = await fetch(req);
let res = await fetch(req)
.catch((e) => { console.error(e) })
if (!res.ok) {
throw(`${res.status}: ` + (await res.json()).error)
}
return res.json()
}
}
export default {
endpoint: apiEndpoint,
endPoints: endPoints,
Upload: Upload
}

@ -5,6 +5,7 @@ import App from './App.vue';
import GetWorker from './workerInterface.js'
window.app = new Vue({
el: '#app',
template: '<App/>',

@ -35,14 +35,19 @@ export default {
this.fileCount = event.target.files.length
this.files = event.target.files
w.post({
msg: 'new-upload',
payload: [...this.files],
})
// Get sha256 of files
for (let file of this.files) {
w.post({
msg: 'file-sha256',
payload: file
})
// for (let file of this.files) {
// w.post({
// msg: 'file-sha256',
// payload: file
// })
// }
}
}
}
}

@ -1,6 +1,8 @@
//This worker will be used for cryptographic, long running and API calls
//to keep the UI free
//
import Api from './api.js'
const name = 'main'
function hexString(buffer) {
@ -15,21 +17,43 @@ function hexString(buffer) {
return hexCodes.join('');
}
function getSHA256(file){
const fileName = file.name
async function getSHA256(file){
// Read as array buffer
fileReader = new FileReaderSync();
buffer = fileReader.readAsArrayBuffer(file);
let fileReader = new FileReaderSync();
let buffer = fileReader.readAsArrayBuffer(file);
// Return hex encoded sha256
return crypto.subtle.digest('SHA-256', buffer)
.then(v => { return hexString(v) })
}
async function newUpload(files){
let payloadFiles = await Promise.all(files.map(async (f) => {
return {
lastModified: f.lastModified,
type: f.type,
name: f.name,
size: f.size,
sha256: await getSHA256(f)
}
}))
// Get sha256
crypto.subtle.digest('SHA-256', buffer).then( digest => {
console.log(`SHA256 for ${fileName}: `, hexString(digest));
})
//for (let file of files) {
// let sha256 = getSHA256(file)
// file.sha256 = sha256
// console.log(files)
//}
let upload = new Api.Upload(payloadFiles)
return upload.create()
}
onmessage = function(e) {
self.onmessage = e => {
switch (e.data.msg) {
case 'init':
@ -40,6 +64,10 @@ onmessage = function(e) {
getSHA256(e.data.payload)
break;
case 'new-upload':
newUpload(e.data.payload)
break;
default:
console.log(`${name} worker: need {msg: "message type", ... }`)

@ -1343,6 +1343,15 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
babel-polyfill@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=
dependencies:
babel-runtime "^6.26.0"
core-js "^2.5.0"
regenerator-runtime "^0.10.5"
babel-preset-env@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
@ -5059,6 +5068,11 @@ regenerate@^1.2.1, regenerate@^1.4.0:
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
regenerator-runtime@^0.10.5:
version "0.10.5"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=
regenerator-runtime@^0.11.0:
version "0.11.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"

Loading…
Cancel
Save