diff --git a/src/engine/openAi.ts b/src/engine/openAi.ts index f87bcd1..22a9b37 100644 --- a/src/engine/openAi.ts +++ b/src/engine/openAi.ts @@ -1,6 +1,7 @@ import axios from 'axios'; import { OpenAI } from 'openai'; import { GenerateCommitMessageErrorEnum } from '../generateCommitMessageFromGitDiff'; +import { parseCustomHeaders } from '../utils/engine'; import { removeContentTags } from '../utils/removeContentTags'; import { tokenCount } from '../utils/tokenCount'; import { AiEngine, AiEngineConfig } from './Engine'; @@ -23,16 +24,9 @@ export class OpenAiEngine implements AiEngine { } if (config.customHeaders) { - try { - let headers = config.customHeaders; - if (typeof config.customHeaders === 'string') { - headers = JSON.parse(config.customHeaders); - } - - if (headers && typeof headers === 'object' && Object.keys(headers).length > 0) { - clientOptions.defaultHeaders = headers; - } - } catch (error) { + const headers = parseCustomHeaders(config.customHeaders); + if (Object.keys(headers).length > 0) { + clientOptions.defaultHeaders = headers; } } diff --git a/src/utils/engine.ts b/src/utils/engine.ts index e265b5b..dbc45a0 100644 --- a/src/utils/engine.ts +++ b/src/utils/engine.ts @@ -12,7 +12,7 @@ import { GroqEngine } from '../engine/groq'; import { MLXEngine } from '../engine/mlx'; import { DeepseekEngine } from '../engine/deepseek'; -function parseCustomHeaders(headers: any): Record { +export function parseCustomHeaders(headers: any): Record { let parsedHeaders = {}; if (!headers) { diff --git a/test/unit/config.test.ts b/test/unit/config.test.ts index 871655d..fc4709d 100644 --- a/test/unit/config.test.ts +++ b/test/unit/config.test.ts @@ -138,10 +138,10 @@ describe('config', () => { }); expect(config).not.toEqual(null); - expect(config.OCO_API_CUSTOM_HEADERS).toEqual('{"Authorization": "Bearer token123", "X-Custom-Header": "test-value"}'); + expect(config.OCO_API_CUSTOM_HEADERS).toEqual({"Authorization": "Bearer token123", "X-Custom-Header": "test-value"}); - // Verify that the JSON can be parsed correctly - const parsedHeaders = JSON.parse(config.OCO_API_CUSTOM_HEADERS); + // No need to parse JSON again since it's already an object + const parsedHeaders = config.OCO_API_CUSTOM_HEADERS; expect(parsedHeaders).toHaveProperty('Authorization', 'Bearer token123'); expect(parsedHeaders).toHaveProperty('X-Custom-Header', 'test-value'); expect(parsedHeaders).not.toHaveProperty('X-Global-Header');