diff options
author | 2023-04-14 11:59:32 +0000 | |
---|---|---|
committer | 2023-04-14 11:59:32 +0000 | |
commit | d68841d9f75636575cd778838a8ceea5fd5aada3 (patch) | |
tree | 778c84203ed9bfa4dc1c8234e4e2cf60da6ebd8c /src/app/http-interceptors/mock.interceptor.ts | |
parent | 42af09588f1f839b9ab36356f02f34c89559bcfa (diff) |
Upload ui
Issue-ID: PORTAL-1084
Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de>
Change-Id: Id0c94859a775094e67b0bb9c91ca5e776a08c068
Diffstat (limited to 'src/app/http-interceptors/mock.interceptor.ts')
-rw-r--r-- | src/app/http-interceptors/mock.interceptor.ts | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/app/http-interceptors/mock.interceptor.ts b/src/app/http-interceptors/mock.interceptor.ts new file mode 100644 index 0000000..6fcb122 --- /dev/null +++ b/src/app/http-interceptors/mock.interceptor.ts @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2022. Deutsche Telekom AG + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + + +import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; + +/** + * This Interceptor reroutes URLs that are defined in the `matchers` array to [Wiremock](https://wiremock.org/) endpoints. + * This is useful, when the real api is not yet available. + */ +@Injectable() +export class MockInterceptor implements HttpInterceptor { + // list of all available RegExp URL matchers + // !! do not forget to remove matcher when API implementation is ready !! + private readonly matchers: RegExp[] = [ + // for example: + // /tiles/ + ]; + + intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { + let newRequest = request; + + if (this.matchers.some(matcher => request.url.match(matcher))) { + console.warn(`MockInterceptor is enabled for URL: '${request.url}'`); + // intentional usage of .replace instead of .replaceAll to replace only first instance + newRequest = request.clone({ + url: request.url.replace('/api/', '/mock-api/'), + }); + } + + return next.handle(newRequest); + } +} |