--- /dev/null
+/*
+ *
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ *
+ */
+
+import guid from '../libraries/guid'
+import DropZone from 'dropzone'
+import Utils from '../libraries/utils'
+import CatalogPackageManagerActions from '../actions/CatalogPackageManagerActions'
+import ReactDOM from 'react-dom'
+import $ from 'jquery'
+
+const API_SERVER = Utils.getSearchParams(window.location).api_server;
+
+
+
+
+export default class PackageManager {
+ constructor(element, button, action) {
+ this.stagingArea = {
+ packages: {
+ ids: []
+ }
+ }
+ this.stagingAreaMonitor = null;
+ }
+ createStagingArea(type, name) {
+ return $.ajax({
+ url: Utils.getSearchParams(window.location).api_server + ':8008/api/operations/create-staging-area',
+ type: 'POST',
+ data: {
+ "input" : {
+ // Package type not important for package upload.
+ "package-type": type || "NSD",
+ "name": name || "Package Staging Area"
+ }
+ },
+ error: function() {
+ console.log('Something went wrong creating the staging area: ', arguments)
+ }
+ }).then(function(data) {
+ /*
+ {
+ "output": {
+ "endpoint": "api/upload/85f8e2dc-638b-46e7-89cb-ee8de322066f",
+ "port": "4568"
+ }
+ }
+ */
+ const id = data.output.endpoint.split('/')[2];
+ const port = data.output.port;
+ this.stagingArea.packages.ids.push(id);
+ this.stagingArea.packages[id] = {
+ port: port
+ };
+ return data
+ })
+ }
+ monitoringStagingAreaSocket() {
+ let self = this;
+ if(self.stagingAreaMonitor) {
+ return self.stagingAreaMonitor;
+ }
+ new Promise(function(resolve, reject) {
+ $.ajax({
+ url: '/socket-polling?api_server=' + API_SERVER ,
+ type: 'POST',
+ beforeSend: Utils.addAuthorizationStub,
+ data: {
+ url: 'launchpad/api/nsr?api_server=' + API_SERVER
+ },
+ success: function(data, textStatus, jqXHR) {
+ Utils.checkAndResolveSocketRequest(data, resolve, reject, self.monitoringStagingAreaSocketHandler);
+ }
+ })
+ })
+
+ return undefined;
+ }
+ monitoringStagingAreaSocketHandler(connection) {
+ let self = this;
+ let ws = window.multiplexer.channel(connection);
+ if (!connection) return;
+ self.stagingAreaMonitor = connection;
+ ws.onmessage = function(socket) {
+ try {
+ Utils.checkAuthentication(data.statusCode, function() {
+ ws.close();
+ });
+
+ } catch(e) {
+ console.log('An exception occurred in monitoringStagingAreaSocketHandler', e)
+ }
+ }
+ }
+
+}
+
+
+