/*- * ============LICENSE_START======================================================= * ECOMP Policy Engine * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= */ (function(window, angular) { 'use strict'; angular.module('abs').service('fileUploader', ['$http', '$q', 'fileManagerConfig', function ($http, $q, fileManagerConfig) { function deferredHandler(data, deferred, errorMessage) { if (!data || typeof data !== 'object') { return deferred.reject('Bridge response error, please check the docs'); } if (data.result && data.result.error) { return deferred.reject(data); } if (data.error) { return deferred.reject(data); } if (errorMessage) { return deferred.reject(errorMessage); } deferred.resolve(data); } this.requesting = false; this.upload = function(fileList, path) { if (! window.FormData) { throw new Error('Unsupported browser version'); } var self = this; var form = new window.FormData(); var deferred = $q.defer(); form.append('destination', '/' + path.join('/')); for (var i = 0; i < fileList.length; i++) { var fileObj = fileList.item(i); fileObj instanceof window.File && form.append('file-' + i, fileObj); } self.requesting = true; $http.post(fileManagerConfig.uploadUrl, form, { transformRequest: angular.identity, headers: { 'Content-Type': undefined } }).success(function(data) { deferredHandler(data, deferred); }).error(function(data) { deferredHandler(data, deferred, 'Unknown error uploading files'); })['finally'](function() { self.requesting = false; }); return deferred.promise; }; }]); })(window, angular);