File

integration-libs/cds/src/profiletag/http-interceptors/consent-reference-interceptor.ts

Index

Methods

Constructor

constructor(profileTagEventTracker: ProfileTagEventService, occEndpoints: OccEndpointsService)
Parameters :
Name Type Optional
profileTagEventTracker ProfileTagEventService No
occEndpoints OccEndpointsService No

Methods

intercept
intercept(request: HttpRequest, next: HttpHandler)
Parameters :
Name Type Optional
request HttpRequest<any> No
next HttpHandler No
Returns : Observable<HttpEvent<any>>
Private isOccUrl
isOccUrl(url: string)
Parameters :
Name Type Optional
url string No
Returns : boolean
import {
  HttpEvent,
  HttpHandler,
  HttpInterceptor,
  HttpRequest,
} from '@angular/common/http';
import { Injectable } from '@angular/core';
import { OccEndpointsService } from '@spartacus/core';
import { Observable } from 'rxjs';
import { ProfileTagEventService } from '../services/profiletag-event.service';

@Injectable({ providedIn: 'root' })
export class ConsentReferenceInterceptor implements HttpInterceptor {
  constructor(
    private profileTagEventTracker: ProfileTagEventService,
    private occEndpoints: OccEndpointsService
  ) {}
  intercept(
    request: HttpRequest<any>,
    next: HttpHandler
  ): Observable<HttpEvent<any>> {
    if (
      !this.profileTagEventTracker.latestConsentReference ||
      !this.isOccUrl(request.url)
    ) {
      return next.handle(request);
    }
    const cdsHeaders = request.headers.set(
      'X-Consent-Reference',
      this.profileTagEventTracker.latestConsentReference
    );
    const cdsRequest = request.clone({ headers: cdsHeaders });
    return next.handle(cdsRequest);
  }

  private isOccUrl(url: string): boolean {
    return url.includes(this.occEndpoints.getBaseUrl());
  }
}

result-matching ""

    No results matching ""