Files
marketplaces/src/app/interceptors/api-headers.interceptor.ts

38 lines
1.2 KiB
TypeScript
Raw Normal View History

2026-02-28 17:42:36 +04:00
import { HttpInterceptorFn } from '@angular/common/http';
import { inject } from '@angular/core';
import { LocationService } from '../services/location.service';
import { LanguageService } from '../services/language.service';
import { environment } from '../../environments/environment';
/**
* Interceptor that attaches X-Region and X-Language headers
* to every outgoing request aimed at our API.
*
* The backend reads these headers to:
* - filter catalog by region
* - return translated content in the requested language
*/
export const apiHeadersInterceptor: HttpInterceptorFn = (req, next) => {
// Only attach headers to our own API requests
if (!req.url.startsWith(environment.apiUrl)) {
return next(req);
}
const locationService = inject(LocationService);
const languageService = inject(LanguageService);
const regionId = locationService.regionId(); // '' when global
const lang = languageService.currentLanguage(); // 'ru' | 'en' | 'hy'
let headers = req.headers;
if (regionId) {
headers = headers.set('X-Region', regionId);
}
if (lang) {
headers = headers.set('X-Language', lang);
}
return next(req.clone({ headers }));
};