support-multiple-ric-instances
[portal/ric-dashboard.git] / webapp-frontend / src / app / services / ac-xapp / ac-xapp.service.ts
index d25e9db..6e67b32 100644 (file)
  * ========================LICENSE_END===================================
  */
 
- import { Injectable } from '@angular/core';
- import { HttpClient } from '@angular/common/http';
- import { Observable } from 'rxjs';
- import { map } from 'rxjs/operators';
+import { HttpClient } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/operators';
 import { ACAdmissionIntervalControl, ACAdmissionIntervalControlAck } from '../../interfaces/ac-xapp.types';
 import { DashboardSuccessTransport } from '../../interfaces/dashboard.types';
+import { CommonService } from '../common/common.service';
 
 /**
  * Services for calling the Dashboard's A1 endpoints to get/put AC policies.
@@ -33,19 +34,13 @@ import { DashboardSuccessTransport } from '../../interfaces/dashboard.types';
 })
 export class ACXappService {
 
-  private basePath = 'api/a1-p';
+  private component = 'a1-p';
   private policyPath = 'policies';
   private acPolicyName = 'admission_control_policy';
 
-  private buildPath(...args: any[]) {
-    let result = this.basePath;
-    args.forEach(part => {
-      result = result + '/' + part;
-    });
-    return result;
-  }
-
-  constructor(private httpClient: HttpClient) {
+  constructor(
+    private httpClient: HttpClient,
+    private commonSvc: CommonService) {
     // injects to variable httpClient
   }
 
@@ -54,7 +49,7 @@ export class ACXappService {
    * @returns Observable that should yield a String
    */
   getVersion(): Observable<string> {
-    const url = this.buildPath('version');
+    const url = 'api/a1-p/version'
     return this.httpClient.get<DashboardSuccessTransport>(url).pipe(
       // Extract the string here
       map(res => res['data'])
@@ -65,8 +60,8 @@ export class ACXappService {
    * Gets admission control policy.
    * @returns Observable that should yield an ACAdmissionIntervalControl
    */
-  getPolicy(): Observable<ACAdmissionIntervalControl> {
-    const url = this.buildPath(this.policyPath, this.acPolicyName);
+  getPolicy(instanceKey: string): Observable<ACAdmissionIntervalControl> {
+    const url = this.commonSvc.buildPath(instanceKey, this.component, this.policyPath, this.acPolicyName);
     return this.httpClient.get<ACAdmissionIntervalControl>(url);
   }
 
@@ -75,8 +70,8 @@ export class ACXappService {
    * @param policy an instance of ACAdmissionIntervalControl
    * @returns Observable that should yield a response code, no data
    */
-  putPolicy(policy: ACAdmissionIntervalControl): Observable<any> {
-    const url = this.buildPath(this.policyPath, this.acPolicyName);
+  putPolicy(instanceKey: string, policy: ACAdmissionIntervalControl): Observable<any> {
+    const url = this.commonSvc.buildPath(instanceKey, this.component, this.policyPath, this.acPolicyName);
     return this.httpClient.put<ACAdmissionIntervalControlAck>(url, policy, { observe: 'response' });
   }