/* tslint:disable */
/* eslint-disable */
/* Code generated by ng-openapi-gen DO NOT EDIT. */

import { HttpClient, HttpContext } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

import { BaseService } from '../base-service';
import { ApiConfiguration } from '../api-configuration';
import { StrictHttpResponse } from '../strict-http-response';

import { getRegisteredManoProviders } from '../fn/nfv-metrics-api/get-registered-mano-providers';
import { GetRegisteredManoProviders$Params } from '../fn/nfv-metrics-api/get-registered-mano-providers';
import { getRegisteredNsds } from '../fn/nfv-metrics-api/get-registered-nsds';
import { GetRegisteredNsds$Params } from '../fn/nfv-metrics-api/get-registered-nsds';
import { getRegisteredVnfs } from '../fn/nfv-metrics-api/get-registered-vnfs';
import { GetRegisteredVnfs$Params } from '../fn/nfv-metrics-api/get-registered-vnfs';
import { RegisteredManoProviders } from '../models/registered-mano-providers';
import { RegisteredNsDs } from '../models/registered-ns-ds';
import { RegisteredVnFs } from '../models/registered-vn-fs';

@Injectable({ providedIn: 'root' })
export class NfvMetricsApiService extends BaseService {
  constructor(config: ApiConfiguration, http: HttpClient) {
    super(config, http);
  }

  /** Path part for operation `getRegisteredVnfs()` */
  static readonly GetRegisteredVnfsPath = '/metrics/registeredVnfs';

  /**
   * Get total number of registered VNFs.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `getRegisteredVnfs()` instead.
   *
   * This method doesn't expect any request body.
   */
  getRegisteredVnfs$Response(params?: GetRegisteredVnfs$Params, context?: HttpContext): Observable<StrictHttpResponse<RegisteredVnFs>> {
    return getRegisteredVnfs(this.http, this.rootUrl, params, context);
  }

  /**
   * Get total number of registered VNFs.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `getRegisteredVnfs$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  getRegisteredVnfs(params?: GetRegisteredVnfs$Params, context?: HttpContext): Observable<RegisteredVnFs> {
    return this.getRegisteredVnfs$Response(params, context).pipe(
      map((r: StrictHttpResponse<RegisteredVnFs>): RegisteredVnFs => r.body)
    );
  }

  /** Path part for operation `getRegisteredNsds()` */
  static readonly GetRegisteredNsdsPath = '/metrics/registeredNsds';

  /**
   * Get total number of registered NSDs.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `getRegisteredNsds()` instead.
   *
   * This method doesn't expect any request body.
   */
  getRegisteredNsds$Response(params?: GetRegisteredNsds$Params, context?: HttpContext): Observable<StrictHttpResponse<RegisteredNsDs>> {
    return getRegisteredNsds(this.http, this.rootUrl, params, context);
  }

  /**
   * Get total number of registered NSDs.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `getRegisteredNsds$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  getRegisteredNsds(params?: GetRegisteredNsds$Params, context?: HttpContext): Observable<RegisteredNsDs> {
    return this.getRegisteredNsds$Response(params, context).pipe(
      map((r: StrictHttpResponse<RegisteredNsDs>): RegisteredNsDs => r.body)
    );
  }

  /** Path part for operation `getRegisteredManoProviders()` */
  static readonly GetRegisteredManoProvidersPath = '/metrics/registeredManoProviders';

  /**
   * Get total number of registered Mano Providers.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `getRegisteredManoProviders()` instead.
   *
   * This method doesn't expect any request body.
   */
  getRegisteredManoProviders$Response(params?: GetRegisteredManoProviders$Params, context?: HttpContext): Observable<StrictHttpResponse<RegisteredManoProviders>> {
    return getRegisteredManoProviders(this.http, this.rootUrl, params, context);
  }

  /**
   * Get total number of registered Mano Providers.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `getRegisteredManoProviders$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  getRegisteredManoProviders(params?: GetRegisteredManoProviders$Params, context?: HttpContext): Observable<RegisteredManoProviders> {
    return this.getRegisteredManoProviders$Response(params, context).pipe(
      map((r: StrictHttpResponse<RegisteredManoProviders>): RegisteredManoProviders => r.body)
    );
  }

}
