Skip to content

Commit 3a68cfd

Browse files
authored
Merge pull request #12 from topcoder-platform/logger-level-for-challenges
Use axios for fetching challenges
2 parents 54d9aca + ba7e6ee commit 3a68cfd

File tree

2 files changed

+37
-38
lines changed

2 files changed

+37
-38
lines changed

src/mcp/tools/challenges/queryChallenges.tool.ts

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -50,66 +50,66 @@ export class QueryChallengesTool {
5050
accessToken,
5151
);
5252

53-
if (!challenges.ok) {
53+
if (challenges.status < 200 || challenges.status >= 300) {
5454
this.logger.error(
5555
`Failed to fetch challenges from Topcoder API: ${challenges.statusText}`,
5656
);
5757
try {
58-
this.logger.error(await challenges.json());
58+
this.logger.error(challenges.data);
5959
} catch (e) {
6060
this.logger.error('Failed to log challenge error');
6161
}
6262

6363
// Return an error response if the API call fails
6464
return {
6565
content: [
66-
{
67-
type: 'text',
68-
text: `Error fetching challenges: ${challenges.statusText}`,
69-
},
66+
{
67+
type: 'text',
68+
text: `Error fetching challenges: ${challenges.statusText}`,
69+
},
7070
],
7171
isError: true,
7272
};
7373
}
7474

75-
// Parse the response as JSON
76-
const challengesData = await challenges.json();
75+
// Axios response: data is already parsed, headers are plain object
76+
const challengesData = challenges.data;
7777

7878
return {
7979
content: [
8080
{
81-
type: 'text',
82-
text: JSON.stringify({
83-
page: Number(challenges.headers.get('x-page')) || 1,
84-
pageSize:
85-
Number(challenges.headers.get('x-per-page')) ||
86-
challengesData.length ||
87-
0,
88-
total:
89-
Number(challenges.headers.get('x-total')) ||
90-
challengesData.length ||
91-
0,
92-
nextPage: challenges.headers.get('x-next-page')
93-
? Number(challenges.headers.get('x-next-page'))
94-
: null,
95-
data: challengesData,
96-
}),
97-
},
98-
],
99-
structuredContent: {
100-
page: Number(challenges.headers.get('x-page')) || 1,
81+
type: 'text',
82+
text: JSON.stringify({
83+
page: Number(challenges.headers['x-page']) || 1,
10184
pageSize:
102-
Number(challenges.headers.get('x-per-page')) ||
103-
challengesData.length ||
85+
Number(challenges.headers['x-per-page']) ||
86+
(Array.isArray(challengesData) ? challengesData.length : 0) ||
10487
0,
10588
total:
106-
Number(challenges.headers.get('x-total')) ||
107-
challengesData.length ||
89+
Number(challenges.headers['x-total']) ||
90+
(Array.isArray(challengesData) ? challengesData.length : 0) ||
10891
0,
109-
nextPage: challenges.headers.get('x-next-page')
110-
? Number(challenges.headers.get('x-next-page'))
92+
nextPage: challenges.headers['x-next-page']
93+
? Number(challenges.headers['x-next-page'])
11194
: null,
11295
data: challengesData,
96+
}),
97+
},
98+
],
99+
structuredContent: {
100+
page: Number(challenges.headers['x-page']) || 1,
101+
pageSize:
102+
Number(challenges.headers['x-per-page']) ||
103+
(Array.isArray(challengesData) ? challengesData.length : 0) ||
104+
0,
105+
total:
106+
Number(challenges.headers['x-total']) ||
107+
(Array.isArray(challengesData) ? challengesData.length : 0) ||
108+
0,
109+
nextPage: challenges.headers['x-next-page']
110+
? Number(challenges.headers['x-next-page'])
111+
: null,
112+
data: challengesData,
113113
},
114114
};
115115
} catch (error) {

src/shared/topcoder/challenges.service.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { ENV_CONFIG } from 'src/config';
33
import { Logger } from 'src/shared/global';
44
import { QUERY_CHALLENGES_TOOL_PARAMETERS } from 'src/mcp/tools/challenges/queryChallenges.parameters';
55
import { z } from 'zod';
6+
import axios from 'axios';
67

78
const { TOPCODER_API_BASE_URL } = ENV_CONFIG;
89

@@ -40,10 +41,8 @@ export class TopcoderChallengesService {
4041
);
4142

4243
try {
43-
return await fetch(stringUrl, {
44-
method: 'GET',
45-
headers,
46-
});
44+
const response = await axios.get(stringUrl, { headers });
45+
return response;
4746
} catch (error) {
4847
this.logger.error(`Error fetching challenges: ${JSON.stringify(error)}`, error);
4948
throw error;

0 commit comments

Comments
 (0)