(function () { 'use strict'; var mod = angular.module('myMessages'); var serviceId = 'fileReaderService'; mod.factory(serviceId, ['common', '$q', myMessagesService]); function myMessagesService(common, $q) { var getLogFn = common.logger.getLogFn; var log = getLogFn(serviceId); var logSuccess = getLogFn(serviceId, 'success'); var logError = getLogFn(serviceId, 'error'); var logWarning = getLogFn(serviceId, 'warning'); var service = { readAsDataURL: readAsDataURL }; return service; function readAsDataURL (file, scope) { var deferred = $q.defer(); var reader = getReader(deferred, scope); reader.readAsDataURL(file); return deferred.promise; }; function getReader (deferred, scope) { var reader = new FileReader(); reader.onload = onLoad(reader, deferred, scope); reader.onerror = onError(reader, deferred, scope); reader.onprogress = onProgress(reader, scope); return reader; }; function onLoad (reader, deferred, scope) { return function () { scope.$apply(function () { deferred.resolve(reader.result); }); }; }; function onError (reader, deferred, scope) { return function () { scope.$apply(function () { deferred.reject(reader.result); }); }; }; function onProgress (reader, scope) { return function (event) { scope.$broadcast("fileProgress", { total: event.total, loaded: event.loaded }); }; }; } })();