Files
psp_api/src/common/interceptors/fetch-request.interceptor.ts
T
ahasani a486127ade feat: implement SalesInvoiceTspSwitchService and SalesInvoiceTspService for handling TSP provider interactions
- Add SalesInvoiceTspSwitchService to manage TSP provider selection and sending invoices.
- Introduce SalesInvoiceTspService for creating, sending, and retrieving sales invoices.
- Implement NamaProviderSwitchAdapter for communication with the NAMA TSP provider API.
- Define DTOs for request and response structures specific to the NAMA provider.
- Enhance error handling and logging for TSP provider interactions.
2026-05-03 16:23:17 +03:30

64 lines
1.5 KiB
TypeScript

export interface FetchRequestContext {
url: string
init: RequestInit
}
export interface FetchRequestInterceptor {
onRequest?(
context: FetchRequestContext,
): Promise<FetchRequestContext> | FetchRequestContext
onResponse?(
context: FetchRequestContext,
response: Response,
): Promise<Response> | Response
onError?(context: FetchRequestContext, error: unknown): Promise<void> | void
}
function mergeHeaders(
currentHeaders: HeadersInit | undefined,
newHeaders: HeadersInit,
): Headers {
const mergedHeaders = new Headers(currentHeaders)
const incomingHeaders = new Headers(newHeaders)
incomingHeaders.forEach((value, key) => {
mergedHeaders.set(key, value)
})
return mergedHeaders
}
export function createHeaderRequestInterceptor(
headers: HeadersInit,
): FetchRequestInterceptor {
return {
onRequest(context) {
return {
...context,
init: {
...context.init,
headers: mergeHeaders(context.init.headers, headers),
},
}
},
}
}
export function createEnsureSuccessResponseInterceptor(): FetchRequestInterceptor {
return {
async onResponse(_, response) {
if (response.ok) {
return response
}
const errorBody = await response.text().catch(() => '')
const normalizedBody = errorBody
return Promise.reject({
status: response.status,
statusText: response.statusText,
body: normalizedBody,
})
},
}
}