[PORTAL-7] Rebase
[portal.git] / ecomp-portal-FE-common / client / app / services / widgets-catalog / widgets-catalog.service.js
1 /*-\r
2  * ================================================================================\r
3  * ECOMP Portal\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ================================================================================\r
19  */\r
20 'use strict';\r
21 \r
22 (function () {\r
23         class WidgetsCatalogService {\r
24         constructor($q, $log, $http, conf,uuid,base64Service, beReaderService, utilsService) {\r
25             this.$q = $q;\r
26             this.$log = $log;\r
27             this.$http = $http;\r
28             this.conf = conf;\r
29             this.uuid = uuid;\r
30             this.base64Service = base64Service;\r
31             this.beReaderService = beReaderService;\r
32             this.utilsService = utilsService;\r
33         }\r
34         \r
35         getUserWidgets(loginName) {\r
36                  let deferred = this.$q.defer();\r
37                  this.$http({\r
38                          method: "GET",\r
39                      url: this.conf.api.widgetCommon + '/widgetCatalog' + '/' + loginName,\r
40                      cache: false,\r
41                      headers: {\r
42                          'X-Widgets-Type': 'all',\r
43                          'X-ECOMP-RequestID':this.uuid.generate()\r
44                      }\r
45              }).then(res => {\r
46                         if (res == null || res.data == null) {\r
47                      deferred.reject("WidgetsCatalogService::getUserWidgets Failed");\r
48                  } else {\r
49                      deferred.resolve(res.data);\r
50                  }\r
51              })\r
52              .catch(status => {\r
53                  deferred.reject(status);\r
54                  });\r
55              return deferred.promise;\r
56         }\r
57 \r
58         getManagedWidgets() {           \r
59             let deferred = this.$q.defer();\r
60             let url = this.conf.api.widgetCommon + '/widgetCatalog';\r
61             this.$http({\r
62                 method: "GET",\r
63                 url: url,\r
64                 cache: false,\r
65                 headers: {\r
66                         'X-Widgets-Type': 'all',\r
67                         'X-ECOMP-RequestID':this.uuid.generate()\r
68                 }\r
69             }).then(res => {\r
70                         if (res == null || res.data == null) {\r
71                      deferred.reject("WidgetsCatalogService::getManagedWidgets Failed");\r
72                  } else {\r
73                      deferred.resolve(res.data);\r
74                  }\r
75              })\r
76              .catch(status => {\r
77                  deferred.reject(status);\r
78              });  \r
79             return deferred.promise;\r
80         }\r
81         \r
82         createWidget(newWidget, file) {\r
83                 console.log(newWidget);\r
84                 let deferred = this.$q.defer();\r
85                 var formData = new FormData();\r
86                 formData.append('file', file);\r
87                 this.$http({\r
88                 method: "POST",\r
89                 url: this.conf.api.widgetCommon + '/widgetCatalog',\r
90                 transformRequest: angular.identity,  \r
91                 data: formData,\r
92                 headers:{  \r
93                         'Content-Type': undefined,\r
94                         'X-Widgets-Type': 'all',\r
95                         'X-ECOMP-RequestID':this.uuid.generate()\r
96                 },\r
97                 params:{\r
98                         'newWidget': newWidget\r
99                 }\r
100             }).then(res => {\r
101                 if (res == null || res.data == null) {\r
102                     deferred.reject("WidgetsCatalogService::getManagedWidgets Failed");\r
103                 } else {\r
104                     deferred.resolve(res.data);\r
105                 }\r
106             })\r
107             .catch(errRes => {\r
108                 deferred.reject(errRes);\r
109             });\r
110             return deferred.promise;\r
111         }\r
112         \r
113         updateWidgetWithFile(file, widgetId, newWidget){\r
114                 console.log(widgetId);\r
115                 let deferred = this.$q.defer();\r
116             var formData = new FormData();\r
117                 formData.append('file', file);\r
118                 let url = this.conf.api.widgetCommon + '/widgetCatalog/' + widgetId;\r
119                 this.$http({\r
120                 method: 'POST',\r
121                 url: url, \r
122                 transformRequest: angular.identity,  \r
123                 data: formData,\r
124                 headers: {        \r
125                         'Content-Type': undefined,\r
126                         'X-Widgets-Type': 'all',\r
127                         'X-ECOMP-RequestID':this.uuid.generate()\r
128                 },\r
129                         params:{\r
130                                 'newWidget': newWidget\r
131                         }\r
132             })\r
133             .then(res => {\r
134                if (res == null || res.data == null)\r
135                    deferred.reject("WidgetsCatalogService::saveWidgetFile Failed");\r
136                else \r
137                    deferred.resolve(res.data);\r
138             })\r
139             .catch(status => {\r
140                  deferred.reject(status);\r
141              });  \r
142                 return deferred.promise;\r
143         }\r
144         \r
145         updateWidget(widgetId, widgetData) {\r
146             let deferred = this.$q.defer();\r
147             let url = this.conf.api.widgetCommon  + '/widgetCatalog' + '/' + widgetId;\r
148             this.$http({\r
149                 method: 'PUT',\r
150                 url: url,\r
151                 cache: false,\r
152                 data: widgetData,\r
153                 headers: {\r
154                         'X-Widgets-Type': 'all',\r
155                         'X-ECOMP-RequestID':this.uuid.generate()\r
156                 }\r
157             })\r
158             .then(res => {\r
159                 deferred.resolve(res.data);\r
160             })\r
161             .catch(errRes => {\r
162                 deferred.reject(errRes);\r
163             });\r
164            \r
165             return deferred.promise;\r
166         }\r
167         \r
168         \r
169         deleteWidgetFile(widgetName) {\r
170                 let deferred = this.$q.defer();\r
171             this.$log.info('WidgetsCatalogService::deleteWidgetCatalog');\r
172             let url = this.conf.api.widgetCommon + '/doUpload' + '/' + widgetName;\r
173             this.$http({\r
174                 method: "DELETE",\r
175                 url: url,\r
176                 cache: false,\r
177                 headers:{  \r
178                         'X-Widgets-Type': 'all',\r
179                         'X-ECOMP-RequestID':this.uuid.generate()\r
180                 }\r
181             }).then(res => {\r
182                     deferred.resolve(res.data); \r
183                 })\r
184                 .catch(status => {\r
185                         deferred.reject(status);\r
186                 });\r
187            \r
188             return deferred.promise;\r
189         }\r
190         \r
191         deleteWidget(widgetId) {\r
192                 let deferred = this.$q.defer();\r
193             this.$log.info('WidgetsCatalogService::deleteWidgetCatalog');\r
194             let url = this.conf.api.widgetCommon + '/widgetCatalog'  + '/' + widgetId;\r
195             this.$http({\r
196                 method: "DELETE",\r
197                 url: url,\r
198                 cache: false,\r
199                 headers:{  \r
200                         'X-Widgets-Type': 'all',\r
201                         'X-ECOMP-RequestID':this.uuid.generate()\r
202                 }\r
203             }).then(res => {\r
204                     deferred.resolve(res.data); \r
205                 })\r
206                 .catch(status => {\r
207                         deferred.reject(status);\r
208                 });\r
209            \r
210             return deferred.promise;\r
211         }\r
212         \r
213         downloadWidgetFile(widgetId) {\r
214                 let deferred = this.$q.defer();\r
215             this.$log.info('WidgetsCatalogService::downloadWidgetFile');\r
216             let url = this.conf.api.widgetCommon + '/download/' + widgetId;\r
217             console.log(url);\r
218             this.$http({\r
219                 method: "GET",\r
220                 url: url,\r
221                 cache: false,\r
222                 responseType: "arraybuffer",\r
223                 headers:{  \r
224                         'X-Widgets-Type': 'all',\r
225                         'X-ECOMP-RequestID':this.uuid.generate()\r
226                 }\r
227             }).then(res => {\r
228                     deferred.resolve(res.data); \r
229                 })\r
230                 .catch(status => {\r
231                         deferred.reject(status);\r
232                 });\r
233            \r
234             return deferred.promise;\r
235         }\r
236         \r
237         updateWidgetCatalog(appData){\r
238                 let deferred = this.$q.defer();\r
239             // Validate the request, maybe this is overkill\r
240             if (appData == null || appData.widgetId == null || appData.select == null) {\r
241                 var msg = 'WidgetCatalogService::updateAppCatalog: field appId and/or select not found';\r
242                 this.$log.error(msg);\r
243                 return deferred.reject(msg);\r
244             }\r
245             this.$http({\r
246                 method: "PUT",\r
247                 url: this.conf.api.widgetCatalogSelection,\r
248                 data: appData,\r
249                 headers: {\r
250                          'X-Widgets-Type': 'all',\r
251                          'X-ECOMP-RequestID':this.uuid.generate()\r
252                 }\r
253             }).then( res => {\r
254                     // Detect non-JSON\r
255                     if (res == null || res.data == null) {\r
256                         deferred.reject("WidgetCatalogService::updateAppCatalog Failed");\r
257                     } else {\r
258                         deferred.resolve(res.data);\r
259                     }\r
260                 })\r
261                 .catch( status => {\r
262                         this.$log.error('WidgetCatalogService:updateAppCatalog failed: ' + status);\r
263                     deferred.reject(status);\r
264                 });\r
265             return deferred.promise;\r
266         }\r
267         \r
268         getServiceJSON(serviceId){\r
269                 let deferred = this.$q.defer();\r
270             this.$log.info('WidgetsCatalogService::getServiceJSON');\r
271             let url = this.conf.api.microserviceProxy + "/" + serviceId;\r
272             console.log(url);\r
273             this.$http({\r
274                 method: "GET",\r
275                 url: url,\r
276                 cache: false,\r
277                 headers:{  \r
278                         'X-Widgets-Type': 'all',\r
279                         'X-ECOMP-RequestID':this.uuid.generate()\r
280                 }\r
281             }).then(res => {\r
282                         if (res == null || res == null) {\r
283                                         this.$log.error('WidgetCatalogService::getServiceJSON Failed: Result or result.data is null');\r
284                             deferred.reject("WidgetCatalogService::getServiceJSON Failed: Result or result.data is null");\r
285                         } else{\r
286                                 deferred.resolve(res.data);\r
287                         }\r
288                         \r
289                 })\r
290                 .catch(status => {\r
291                         deferred.reject(status);\r
292                 });\r
293            \r
294             return deferred.promise;\r
295         }\r
296         \r
297         getWidgetCatalogParameters(widgetId){\r
298                 let deferred = this.$q.defer();\r
299             this.$log.info('WidgetsCatalogService::getWidgetCatalogParameters');\r
300             let url = this.conf.api.widgetCommon + "/parameters/" + widgetId;\r
301             console.log(url);\r
302             this.$http({\r
303                 method: "GET",\r
304                 url: url,\r
305                 cache: false,\r
306                 headers:{  \r
307                         'X-Widgets-Type': 'all',\r
308                         'X-ECOMP-RequestID':this.uuid.generate()\r
309                 }\r
310             }).then(res => {\r
311                         if (res == null || res.data == null) {\r
312                                         this.$log.error('WidgetCatalogService::getWidgetCatalogParameters Failed: Result or result.data is null');\r
313                             deferred.reject("WidgetCatalogService::getWidgetCatalogParameters Failed: Result or result.data is null");\r
314                         } else {\r
315                             deferred.resolve(res.data);\r
316                         }\r
317                 })\r
318                 .catch(status => {\r
319                         deferred.reject(status);\r
320                 });\r
321            \r
322             return deferred.promise;\r
323         }\r
324         \r
325         \r
326         saveWidgetParameter(widgetParamObject){\r
327                 let deferred = this.$q.defer();\r
328             this.$log.info('WidgetsCatalogService::saveWidgetParameter');\r
329             let url = this.conf.api.widgetCommon + "/parameters";\r
330             this.$http({\r
331                 method: "POST",\r
332                 url: url,\r
333                 cache: false,\r
334                 data: widgetParamObject,\r
335                 headers:{  \r
336                         'X-Widgets-Type': 'all',\r
337                         'X-ECOMP-RequestID':this.uuid.generate()\r
338                 }\r
339             }).then(res => {\r
340                         if (res == null || res.data == null) {\r
341                                         this.$log.error('WidgetCatalogService::getWidgetCatalogParameters Failed: Result or result.data is null');\r
342                             deferred.reject("WidgetCatalogService::getWidgetCatalogParameters Failed: Result or result.data is null");\r
343                         } else {\r
344                             deferred.resolve(res.data);\r
345                         }\r
346                 })\r
347                 .catch(status => {\r
348                         deferred.reject(status);\r
349                 });\r
350            \r
351             return deferred.promise;\r
352         }\r
353         \r
354     }\r
355     \r
356     WidgetsCatalogService.$inject = ['$q', '$log', '$http', 'conf','uuid4','base64Service', 'beReaderService', 'utilsService'];\r
357     angular.module('ecompApp').service('widgetsCatalogService', WidgetsCatalogService)\r
358 })();\r