up1/static/js/updown.js

65 lines
2.2 KiB
JavaScript
Raw Normal View History

upload.modules.addmodule({
name: 'updown',
init: function () {
2015-06-11 08:47:11 +02:00
},
downloadfromident: function(seed, progress, done, ident) {
var xhr = new XMLHttpRequest()
xhr.onload = this.downloaded.bind(this, seed, progress, done)
xhr.open('GET', (upload.config.server ? upload.config.server : '') + 'i/' + ident.ident)
xhr.responseType = 'blob'
2015-06-11 08:47:11 +02:00
xhr.onerror = this.onerror.bind(this, progress)
xhr.addEventListener('progress', progress, false)
xhr.send()
},
2015-06-11 08:47:11 +02:00
onerror: function(progress) {
progress('error')
},
downloaded: function (seed, progress, done, response) {
2015-06-11 08:47:11 +02:00
if (response.target.status != 200) {
this.onerror(progress)
} else {
progress('decrypting')
2015-06-11 09:12:04 +02:00
crypt.decrypt(response.target.response, seed).done(done).done(this.cache.bind(this, seed))
2015-06-11 08:47:11 +02:00
}
},
encrypted: function(progress, done, data) {
var formdata = new FormData()
formdata.append('privkey', 'c61540b5ceecd05092799f936e27755f')
formdata.append('ident', data.ident)
formdata.append('file', data.encrypted)
$.ajax({
url: (upload.config.server ? upload.config.server : '') + 'up',
data: formdata,
cache: false,
processData: false,
contentType: false,
dataType: 'json',
xhr: function () {
var xhr = new XMLHttpRequest()
xhr.upload.addEventListener('progress', progress, false)
return xhr
},
type: 'POST'
}).done(done.bind(undefined, data))
},
2015-06-11 09:12:04 +02:00
cache: function(seed, data) {
this.cached = data
this.cached_seed = data.seed
},
cacheresult: function(data) {
2015-06-11 09:13:25 +02:00
this.cache(data.seed, data.encrypted)
2015-06-11 09:12:04 +02:00
},
download: function (seed, progress, done) {
2015-06-11 09:12:04 +02:00
if (this.cached_seed == seed) {
progress('decrypting')
crypt.decrypt(this.cached, seed).done(done)
} else {
crypt.ident(seed).done(this.downloadfromident.bind(this, seed, progress, done))
}
},
upload: function (blob, progress, done) {
2015-06-11 09:12:04 +02:00
crypt.encrypt(blob).done(this.encrypted.bind(this, progress, done)).done(this.cacheresult.bind(this))
}
})