Policy 1707 commit to LF
[policy/engine.git] / POLICY-SDK-APP / src / main / webapp / app / policyApp / policy-models / Editor / js / services / policyuploader.js
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/js/services/policyuploader.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/js/services/policyuploader.js
new file mode 100644 (file)
index 0000000..de7d4c1
--- /dev/null
@@ -0,0 +1,72 @@
+/*-
+ * ============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('policyUploader', ['$http', '$q', 'policyManagerConfig', function ($http, $q, policyManagerConfig) {
+
+        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(policyManagerConfig.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);
\ No newline at end of file