2 * ============LICENSE_START=======================================================
4 * ================================================================================
6 *=================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
22 * This service is to callback REST API from feeder
28 import { Injectable } from "@angular/core";
29 import { HttpClient, HttpHeaders } from "@angular/common/http";
30 import { Observable, of } from "rxjs";
31 import { map, catchError, tap, retry } from "rxjs/operators";
32 import { throwError } from "rxjs";
34 import { Topic } from "src/app/core/models/topic.model";
35 import { Db } from "src/app/core/models/db.model";
36 import { Template } from "src/app/core/models/template.model";
37 import { Dashboard } from "src/app/core/models/dashboard.model";
39 const prefix = "/datalake/v1/";
41 headers: new HttpHeaders({
42 "Content-Type": "application/json"
49 export class RestApiService {
50 constructor(private http: HttpClient) { }
52 private extractData(res: Response) {
53 if (res.status < 200 || res.status >= 300) {
54 throw new Error("Bad response status: " + res.status);
60 private handleError(error) {
61 let errorMessage = "";
62 if (error.error instanceof ErrorEvent) {
63 // Get client-side error
64 errorMessage = error.error.message;
66 // Get server-side error
67 errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
68 console.log(errorMessage);
70 return throwError(errorMessage);
73 private extractData2(res: Response) {
81 getTopicDefaultConfig(): Observable<any> {
82 return this.http.get(prefix + "topics/_DL_DEFAULT_").pipe(
84 map(this.extractData),
85 catchError(this.handleError)
89 updateTopicDefaultConfig(t: Topic): Observable<any> {
91 .put(prefix + "topics/_DL_DEFAULT_", JSON.stringify(t), httpOptions)
94 tap(_ => this.extractData),
95 catchError(this.handleError)
102 getTopicsFromDmaap(): Observable<any> {
103 return this.http.get(prefix + "topics/dmaap").pipe(
105 map(this.extractData),
106 catchError(this.handleError)
110 getTopicsFromFeeder(): Observable<any> {
111 return this.http.get(prefix + "topics").pipe(
113 map(this.extractData),
114 catchError(this.handleError)
118 getTopicDetail(name: string): Observable<any> {
119 return this.http.get(prefix + "topics/" + name).pipe(
121 map(this.extractData),
122 catchError(this.handleError)
126 addNewTopic(t: Topic): Observable<any> {
128 .post<any>(prefix + "topics", t)
131 tap(_ => console.log(`add topic name=${t.name}`)),
132 catchError(this.handleError)
136 addTopic(t: Topic): Observable<any> {
138 .post<any>(prefix + "topics", t)
141 tap(_ => console.log(`add topic name=${t.name}`)),
142 catchError(this.handleError)
146 upadteTopic(t: Topic): Observable<any> {
148 .put(prefix + "topics/" + t.name, t)
151 tap(_ => this.extractData),
152 catchError(this.handleError)
156 deleteTopic(name: string): Observable<any> {
157 return this.http.delete(prefix + "topics/" + name).pipe(
159 tap(_ => console.log(`deleted topic name=${name}`)),
160 catchError(this.handleError)
167 getDbList(): Observable<any> {
168 return this.http.get(prefix + "dbs").pipe(
170 map(this.extractData),
171 catchError(this.handleError)
175 getDbDetail(name: string): Observable<any> {
176 return this.http.get(prefix + "dbs/" + name).pipe(
178 map(this.extractData),
179 catchError(this.handleError)
183 upadteDb(d: Db): Observable<any> {
185 .put(prefix + "dbs", d)
188 tap(_ => this.extractData),
189 catchError(this.handleError)
197 return this.http.post<any>(prefix + "feeder/start", "", httpOptions).pipe(
199 tap(_ => console.log(`start feeder`)),
200 catchError(this.handleError)
205 return this.http.post<any>(prefix + "feeder/stop", "", httpOptions).pipe(
207 tap(_ => console.log(`stop feeder`)),
208 catchError(this.handleError)
213 return this.http.get(prefix + "feeder/status").pipe(
215 map(this.extractData),
216 catchError(this.handleError)
224 getDashboardList(): Observable<any> {
225 let url = prefix + "portals"; //onilne
226 return this.http.get(url).pipe(
228 map(this.extractData),
229 catchError(this.handleError)
233 createUpadteDashboard(d: Dashboard): Observable<any> {
234 // let url = prefix +"/dashboard-list/successCreteOrEditDemo.json"; //local
235 let url = prefix + "portals";//onilne
240 tap(_ => this.extractData),
241 catchError(this.handleError)
245 deleteDashboard(d: Dashboard): Observable<any> {
246 let url = prefix + "portals"; //onilne
251 tap(_ => console.log(`deleted db name=${d.name}`)),
252 catchError(this.handleError)
260 getTemplateAll(): Observable<any> {
261 return this.http.get(prefix + "designs/").pipe( //onlin
263 map(this.extractData),
264 catchError(this.handleError)
268 createNewTemplate(t: Template): Observable<any> {
270 .post(prefix + "designs", t)
273 tap(_ => this.extractData),
274 catchError(this.handleError)
278 updateNewTemplate(t: Template): Observable<any> {
281 .put(prefix + "designs/" + id, t)
284 tap(_ => this.extractData),
285 catchError(this.handleError)
289 // getTopicName(): Observable<any> {
290 // return this.http.get(prefix + "topics").pipe( //onlin
292 // map(this.extractData),
293 // catchError(this.handleError)
297 getTemplateTypeName(): Observable<any> {
298 return this.http.get(prefix + "designTypes").pipe( //onlin
300 map(this.extractData),
301 catchError(this.handleError)
305 DeleteTemplate(id): Observable<any> {
306 return this.http.delete(prefix + "designs/" + id).pipe( //online
308 map(this.extractData2),
309 catchError(this.handleError)
312 deployTemplateKibana(id, body): Observable<any> {
313 body.submitted = true;
314 return this.http.post(prefix + "designs/deploy/" + id, body).pipe( //online
316 map(this.extractData2),
317 catchError(this.handleError)