[PORTAL-7] Rebase
[portal.git] / ecomp-portal-FE-common / client / app / services / widgets / widgets.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 /**\r
21  * Created by doritrieur on 12/3/15.\r
22  */\r
23 'use strict';\r
24 \r
25 (function () {\r
26     class WidgetsService {\r
27         constructor($q, $log, $http, conf, uuid, utilsService) {\r
28             this.$q = $q;\r
29             this.$log = $log;\r
30             this.$http = $http;\r
31             this.conf = conf;\r
32             this.uuid = uuid;\r
33             this.utilsService = utilsService;\r
34         }\r
35 \r
36         getUserWidgets() {\r
37             let deferred = this.$q.defer();\r
38             this.$log.info('WidgetsService::getUserWidgets');\r
39             this.$http({\r
40                 method: 'GET',\r
41                 url: this.conf.api.widgets,\r
42                 cache: false,\r
43                 headers: {\r
44                     'X-Widgets-Type': 'all',\r
45                     'X-ECOMP-RequestID':this.uuid.generate()\r
46                 }\r
47             }).then(res => {\r
48                 // If response comes back as a redirected HTML page which IS NOT a success\r
49                 if (this.utilsService.isValidJSON(res) == false) {\r
50                         var msg = 'WidgetsService::getUserWidgets Failed';\r
51                         this.$log.error(msg);\r
52                         deferred.reject(msg);\r
53                 } else {\r
54                         // this.$log.info('WidgetsService::getUserWidgets Succeeded');\r
55                         deferred.resolve(res.data);\r
56                 }\r
57             })\r
58             .catch(status => {\r
59                 deferred.reject(status);\r
60             });\r
61             return deferred.promise;\r
62         }\r
63 \r
64         getManagedWidgets() {\r
65             let deferred = this.$q.defer();\r
66             this.$log.info('WidgetsService::getManagedWidgets');\r
67             this.$http({\r
68                 method: 'GET',\r
69                 url: this.conf.api.widgets,\r
70                 cache: false,\r
71                 headers: {\r
72                     'X-Widgets-Type': 'managed',\r
73                     'X-ECOMP-RequestID':this.uuid.generate()\r
74                 }\r
75             }).then(res => {\r
76                     // If response comes back as a redirected HTML page which IS NOT a success\r
77                     if (this.utilsService.isValidJSON(res)== false) {\r
78                         deferred.reject('WidgetsService::getManagedWidgets Failed');\r
79                     } else if(Object.keys(res).length == 0 && this.utilsService.isValidJSON(res)) {\r
80                         deferred.resolve(null);\r
81                     } else {\r
82                         this.$log.info('WidgetsService::getManagedWidgets Succeeded');\r
83                         deferred.resolve(res.data);\r
84                     }\r
85                 })\r
86                 .catch(status => {\r
87                     deferred.reject(status);\r
88                 });\r
89             return deferred.promise;\r
90         }\r
91 \r
92         createWidget(widgetData) {\r
93             let deferred = this.$q.defer();\r
94             this.$log.info('WidgetsService::createWidget');\r
95             this.$http({\r
96                 method: 'POST',\r
97                 url: this.conf.api.widgets,\r
98                 cache: false,\r
99                 data: widgetData,\r
100                 headers: {\r
101                     'X-ECOMP-RequestID':this.uuid.generate()\r
102                 }\r
103             }).then(res => {\r
104                     // If response comes back as a redirected HTML page which IS NOT a success\r
105                     if (this.utilsService.isValidJSON(res)== false) {\r
106                         deferred.reject('WidgetsService::createWidget Failed');\r
107                     } else {\r
108                         this.$log.info('WidgetsService::createWidget Succeeded');\r
109                         deferred.resolve(res.data);\r
110                     }\r
111                 })\r
112                 .catch(errRes => {\r
113                     deferred.reject(errRes);\r
114                 });\r
115             return deferred.promise;\r
116         }\r
117 \r
118         updateWidget(widgetId, widgetData) {\r
119             let deferred = this.$q.defer();\r
120             this.$log.info('WidgetsService::updateWidget');\r
121             let url = this.conf.api.widgets + '/' + widgetId;\r
122             this.$http({\r
123                 method: 'PUT',\r
124                 url: url,\r
125                 cache: false,\r
126                 data: widgetData,\r
127                 headers: {\r
128                     'X-ECOMP-RequestID':this.uuid.generate()\r
129                 }\r
130             }).then(res => {\r
131                     // If response comes back as a redirected HTML page which IS NOT a success\r
132                     if (this.utilsService.isValidJSON(res)== false) {\r
133                         deferred.reject('WidgetsService::updateWidget Failed');\r
134                     } else {\r
135                         this.$log.info('WidgetsService::updateWidget Succeeded');\r
136                         deferred.resolve(res.data);\r
137                     }\r
138                 })\r
139                 .catch(errRes => {\r
140                     deferred.reject(errRes);\r
141                 });\r
142             return deferred.promise;\r
143         }\r
144 \r
145         deleteWidget(widgetId) {\r
146             let deferred = this.$q.defer();\r
147             this.$log.info('WidgetsService::deleteWidget');\r
148             let url = this.conf.api.widgets + '/' + widgetId;\r
149             this.$http({\r
150                 method: 'DELETE',\r
151                 url: url,\r
152                 cache: false,\r
153                 headers: {\r
154                     'X-ECOMP-RequestID':this.uuid.generate()\r
155                 }\r
156             }).then(res => {\r
157                     // If response comes back as a redirected HTML page which IS NOT a success\r
158                     if (this.utilsService.isValidJSON(res)== false) {\r
159                         deferred.reject('WidgetsService::deleteWidget Failed');\r
160                     } else {\r
161                         this.$log.info('WidgetsService::deleteWidget Succeeded');\r
162                         deferred.resolve(res.data);\r
163                     }\r
164                 })\r
165                 .catch(status => {\r
166                     deferred.reject(status);\r
167                 });\r
168             return deferred.promise;\r
169         }\r
170 \r
171         checkIfWidgetUrlExists(urlToValidate) {\r
172             let deferred = this.$q.defer();\r
173             this.$log.info('WidgetsService::checkIfWidgetUrlExists:' + urlToValidate);\r
174             let reqBody = {\r
175                 url: urlToValidate\r
176             };\r
177             this.$http({\r
178                 method: 'POST',\r
179                 url: this.conf.api.widgetsValidation,\r
180                 cache: false,\r
181                 data: reqBody,\r
182                 headers: {\r
183                     'X-ECOMP-RequestID':this.uuid.generate()\r
184                 }\r
185             }).then(() => {\r
186                 //if exists return true\r
187                     deferred.resolve(true);\r
188                 })\r
189                 .catch(response => {\r
190                     if (this.utilsService.isValidJSON(res)== false) {\r
191                         deferred.reject('WidgetsService::checkIfWidgetUrlExists Failed');\r
192                     } else {\r
193                         if (response.data.status === 404) {\r
194                             deferred.resolve(false);\r
195                         } else {\r
196                             deferred.reject(response.data);\r
197                         }\r
198                     }\r
199                 });\r
200             return deferred.promise;\r
201         }\r
202 \r
203     }\r
204     WidgetsService.$inject = ['$q', '$log', '$http', 'conf','uuid4', 'utilsService'];\r
205     angular.module('ecompApp').service('widgetsService', WidgetsService)\r
206 })();\r