/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import { ZipManager } from '../managers/zip.manager.js';
import { AppConstants } from '../constants/app.constants.js';
import { IGatewayAssetHandler } from '../models/interface.js';
import { LogWrapper } from '../service/log-wrapper.js';

export class GatewayAssetHandler implements IGatewayAssetHandler {
	private readonly zipManager: ZipManager;

	constructor(buffer: Buffer) {
		this.zipManager = new ZipManager(buffer);
		LogWrapper.logDebug('0003', 'ZipManager initialized in GatewayAssetHandler.');
	}

	async getApiEndpoints(key: string) {
		LogWrapper.logInfo('0003', `Attempting to get API endpoints for: ${key}`);

		const content = await this.zipManager.getEntryByName(AppConstants.GATEWAY_JSON_FILE);

		if (content) {
			LogWrapper.logDebug('0003', `Content retrieved from ${AppConstants.GATEWAY_JSON_FILE}. Parsing JSON.`);

			const parsedContent = JSON.parse(content);
			const endpoints = parsedContent[key] || [];

			LogWrapper.logInfo('0003', `API endpoints successfully retrieved for key: ${key}.`);
			return endpoints;
		}
		LogWrapper.logWarn('0003', `No content found for ${AppConstants.GATEWAY_JSON_FILE}. Returning empty array.`);
		return [];
	}
}
