update camera upload

This commit is contained in:
Luke Pulverenti 2015-09-10 14:28:22 -04:00
parent 50dc5c4d1b
commit a2d603a31e
19 changed files with 404 additions and 141 deletions

View file

@ -40,12 +40,93 @@
function uploadImagesWithHistory(server, uploadHistory, apiClient, deferred) {
require(['localassetmanager'], function () {
require(['localassetmanager', "cryptojs-sha1"], function () {
// TODO: Mimic java version of ContentUploader.UploadImagesInternal
deferred.resolve();
LocalAssetManager.getCameraPhotos().done(function (photos) {
photos = getFilesToUpload(photos, uploadHistory);
Logger.log('Found ' + photos.length + ' files to upload');
uploadNext(photos, 0, server, apiClient, deferred);
}).fail(function () {
deferred.reject();
});
});
}
function getFilesToUpload(files, uploadHistory) {
return files.filter(function (file) {
// Seeing some null entries for some reason
if (!file) {
return false;
}
return uploadHistory.FilesUploaded.filter(function (u) {
return getUploadId(file) == u.Id;
}).length == 0;
});
}
function getUploadId(file) {
return CryptoJS.SHA1(file + "1").toString();
}
function uploadNext(files, index, server, apiClient, deferred) {
var length = files.length;
if (index >= length) {
deferred.resolve();
return;
}
uploadFile(files[index], apiClient).done(function () {
uploadNext(files, index + 1, server, apiClient, deferred);
}).fail(function () {
uploadNext(files, index + 1, server, apiClient, deferred);
});
}
function uploadFile(file, apiClient) {
var deferred = DeferredBuilder.Deferred();
require(['fileupload', "cryptojs-sha1"], function () {
var name = 'camera image ' + new Date().getTime();
var url = apiClient.getUrl('Devices/CameraUploads', {
DeviceId: apiClient.deviceId(),
Name: name,
Album: 'Camera Roll',
Id: getUploadId(file),
api_key: apiClient.accessToken()
});
Logger.log('Uploading file to ' + url);
new MediaBrowser.FileUpload().upload(file, name, url).done(function () {
Logger.log('File upload succeeded');
deferred.resolve();
}).fail(function () {
Logger.log('File upload failed');
deferred.reject();
});
});
return deferred.promise();
}
}
if (!globalScope.MediaBrowser) {