Skip to content

Commit 6aae1c7

Browse files
committed
♻️(engine): extract custom header parsing and update OpenAiEngine
- export parseCustomHeaders from src/utils/engine.ts - use parseCustomHeaders in OpenAiEngine for config.customHeaders - remove try/catch and inline JSON.parse logic - update config test to expect headers as object and drop JSON.parse Centralize header parsing for reuse and simplify engine code Update tests to match new header format for clarity
1 parent 71a44fa commit 6aae1c7

File tree

3 files changed

+8
-14
lines changed

3 files changed

+8
-14
lines changed

src/engine/openAi.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import axios from 'axios';
22
import { OpenAI } from 'openai';
33
import { GenerateCommitMessageErrorEnum } from '../generateCommitMessageFromGitDiff';
4+
import { parseCustomHeaders } from '../utils/engine';
45
import { removeContentTags } from '../utils/removeContentTags';
56
import { tokenCount } from '../utils/tokenCount';
67
import { AiEngine, AiEngineConfig } from './Engine';
@@ -23,16 +24,9 @@ export class OpenAiEngine implements AiEngine {
2324
}
2425

2526
if (config.customHeaders) {
26-
try {
27-
let headers = config.customHeaders;
28-
if (typeof config.customHeaders === 'string') {
29-
headers = JSON.parse(config.customHeaders);
30-
}
31-
32-
if (headers && typeof headers === 'object' && Object.keys(headers).length > 0) {
33-
clientOptions.defaultHeaders = headers;
34-
}
35-
} catch (error) {
27+
const headers = parseCustomHeaders(config.customHeaders);
28+
if (Object.keys(headers).length > 0) {
29+
clientOptions.defaultHeaders = headers;
3630
}
3731
}
3832

src/utils/engine.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { GroqEngine } from '../engine/groq';
1212
import { MLXEngine } from '../engine/mlx';
1313
import { DeepseekEngine } from '../engine/deepseek';
1414

15-
function parseCustomHeaders(headers: any): Record<string, string> {
15+
export function parseCustomHeaders(headers: any): Record<string, string> {
1616
let parsedHeaders = {};
1717

1818
if (!headers) {

test/unit/config.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,10 @@ describe('config', () => {
138138
});
139139

140140
expect(config).not.toEqual(null);
141-
expect(config.OCO_API_CUSTOM_HEADERS).toEqual('{"Authorization": "Bearer token123", "X-Custom-Header": "test-value"}');
141+
expect(config.OCO_API_CUSTOM_HEADERS).toEqual({"Authorization": "Bearer token123", "X-Custom-Header": "test-value"});
142142

143-
// Verify that the JSON can be parsed correctly
144-
const parsedHeaders = JSON.parse(config.OCO_API_CUSTOM_HEADERS);
143+
// No need to parse JSON again since it's already an object
144+
const parsedHeaders = config.OCO_API_CUSTOM_HEADERS;
145145
expect(parsedHeaders).toHaveProperty('Authorization', 'Bearer token123');
146146
expect(parsedHeaders).toHaveProperty('X-Custom-Header', 'test-value');
147147
expect(parsedHeaders).not.toHaveProperty('X-Global-Header');

0 commit comments

Comments
 (0)