Catalog alignment
[sdc.git] / catalog-ui / src / app / ng2 / services / workflow.service.ts
1 import { Injectable, Inject } from "@angular/core";
2 import { Observable } from "rxjs/Observable";
3 import { SdcConfigToken, ISdcConfig } from "../config/sdc-config.config";
4 import { HttpClient } from "@angular/common/http";
5 import { Component, OperationModel } from "app/models";
6
7 interface WorkflowOutputParameter {
8     name: string;
9     type: string;
10     mandatory: boolean;
11 }
12
13 interface WorkflowInputParameter extends WorkflowOutputParameter {
14     property: string;
15 }
16
17 @Injectable()
18 export class WorkflowServiceNg2 {
19
20     protected baseUrl;
21     protected catalogBaseUrl;
22
23     WF_STATE_ACTIVE = 'ACTIVE';
24     WF_STATE_ARCHIVED = 'ARCHIVED';
25     VERSION_STATE_CERTIFIED = 'CERTIFIED';
26
27     constructor(private http: HttpClient, @Inject(SdcConfigToken) sdcConfig:ISdcConfig) {
28         this.baseUrl = sdcConfig.api.workflow_root;
29         this.catalogBaseUrl = sdcConfig.api.POST_workflow_artifact;
30     }
31
32     public associateWorkflowArtifact(component: Component, operation: OperationModel): Observable<any> {
33         return this.http.post<any>(this.baseUrl + '/workflows/' + operation.workflowId + '/versions/' + operation.workflowVersionId + '/artifact-deliveries', {
34                 endpoint: this.catalogBaseUrl + '/' + component.getTypeUrl() + component.uuid + '/interfaces/' + operation.interfaceId + '/operations/'
35                 + operation.uniqueId + '/artifacts/' + operation.implementation.artifactUUID, method: 'POST'
36             });
37     }
38
39     public getWorkflows(filterCertified: boolean = true): Observable<any> {
40         return this.http.get<any>(this.baseUrl + '/workflows' + (filterCertified ? '?versionState=' + this.VERSION_STATE_CERTIFIED : ''));
41     }
42
43     public getWorkflowVersions(workflowId: string, filterCertified: boolean = true): Observable<any> {
44         return this.http.get<any>(this.baseUrl + '/workflows/' + workflowId + '/versions' + (filterCertified ? '?state=' + this.VERSION_STATE_CERTIFIED : ''))
45             .map((res) => {
46                 return res.items;
47             });
48     }
49
50     public updateWorkflowVersion(workflowId: string, versionId: string, payload: any): Observable<any> {
51         return this.http.put<any>(this.baseUrl + '/workflows/' + workflowId + '/versions/' + versionId, payload);
52     }
53
54 }