Skip to content

Commit 7a2a721

Browse files
committed
improvement(tools): fixed some confluence tool issues
1 parent 28e7be1 commit 7a2a721

File tree

2 files changed

+111
-3
lines changed

2 files changed

+111
-3
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import { NextResponse } from 'next/server'
2+
3+
export async function POST(request: Request) {
4+
try {
5+
const { domain, accessToken, pageId } = await request.json()
6+
7+
if (!domain) {
8+
return NextResponse.json({ error: 'Domain is required' }, { status: 400 })
9+
}
10+
11+
if (!accessToken) {
12+
return NextResponse.json({ error: 'Access token is required' }, { status: 400 })
13+
}
14+
15+
if (!pageId) {
16+
return NextResponse.json({ error: 'Page ID is required' }, { status: 400 })
17+
}
18+
19+
// Log request details for debugging
20+
console.log('Request details:', {
21+
domain,
22+
tokenLength: accessToken ? accessToken.length : 0,
23+
pageId,
24+
})
25+
26+
// Build the URL - using the same format as retrieve.ts
27+
const url = `https://${domain}/wiki/api/v2/pages/${pageId}?expand=body.view`
28+
29+
console.log(`Fetching Confluence page from: ${url}`)
30+
31+
// Make the request to Confluence API
32+
const response = await fetch(url, {
33+
method: 'GET',
34+
headers: {
35+
'Content-Type': 'application/json',
36+
Accept: 'application/json',
37+
Authorization: `Bearer ${accessToken}`,
38+
},
39+
})
40+
41+
console.log('Response status:', response.status, response.statusText)
42+
43+
if (!response.ok) {
44+
console.error(`Confluence API error: ${response.status} ${response.statusText}`)
45+
let errorMessage
46+
47+
try {
48+
const errorData = await response.json()
49+
console.error('Error details:', JSON.stringify(errorData, null, 2))
50+
errorMessage = errorData.message || `Failed to fetch Confluence page (${response.status})`
51+
} catch (e) {
52+
console.error('Could not parse error response as JSON:', e)
53+
54+
// Try to get the response text for more context
55+
try {
56+
const text = await response.text()
57+
console.error('Response text:', text)
58+
errorMessage = `Failed to fetch Confluence page: ${response.status} ${response.statusText}`
59+
} catch (textError) {
60+
errorMessage = `Failed to fetch Confluence page: ${response.status} ${response.statusText}`
61+
}
62+
}
63+
64+
return NextResponse.json({ error: errorMessage }, { status: response.status })
65+
}
66+
67+
const data = await response.json()
68+
console.log(`Successfully fetched page: ${data.id} - ${data.title}`)
69+
70+
return NextResponse.json({
71+
file: {
72+
id: data.id,
73+
name: data.title,
74+
mimeType: 'confluence/page',
75+
url: data._links?.webui || '',
76+
modifiedTime: data.version?.createdAt || '',
77+
spaceId: data.spaceId,
78+
webViewLink: data._links?.webui || '',
79+
content: data.body?.view?.value || '',
80+
},
81+
})
82+
} catch (error) {
83+
console.error('Error fetching Confluence page:', error)
84+
return NextResponse.json(
85+
{ error: (error as Error).message || 'Internal server error' },
86+
{ status: 500 }
87+
)
88+
}
89+
}

sim/app/api/auth/oauth/confluence/pages/route.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ export async function POST(request: Request) {
1212
return NextResponse.json({ error: 'Access token is required' }, { status: 400 })
1313
}
1414

15+
// Log request details for debugging
16+
console.log('Request details:', {
17+
domain,
18+
tokenLength: accessToken ? accessToken.length : 0,
19+
hasTitle: !!title,
20+
limit,
21+
})
22+
1523
// Build the URL with query parameters
1624
const baseUrl = `https://${domain}/wiki/api/v2/pages`
1725
const queryParams = new URLSearchParams()
@@ -29,7 +37,7 @@ export async function POST(request: Request) {
2937

3038
console.log(`Fetching Confluence pages from: ${url}`)
3139

32-
// Make the request to Confluence API
40+
// Make the request to Confluence API with OAuth Bearer token
3341
const response = await fetch(url, {
3442
method: 'GET',
3543
headers: {
@@ -38,16 +46,27 @@ export async function POST(request: Request) {
3846
},
3947
})
4048

49+
console.log('Response status:', response.status, response.statusText)
50+
4151
if (!response.ok) {
4252
console.error(`Confluence API error: ${response.status} ${response.statusText}`)
4353
let errorMessage
4454

4555
try {
4656
const errorData = await response.json()
57+
console.error('Error details:', JSON.stringify(errorData, null, 2))
4758
errorMessage = errorData.message || `Failed to fetch Confluence pages (${response.status})`
48-
console.error('Error details:', errorData)
4959
} catch (e) {
50-
errorMessage = `Failed to fetch Confluence pages: ${response.status} ${response.statusText}`
60+
console.error('Could not parse error response as JSON:', e)
61+
62+
// Try to get the response text for more context
63+
try {
64+
const text = await response.text()
65+
console.error('Response text:', text)
66+
errorMessage = `Failed to fetch Confluence pages: ${response.status} ${response.statusText}`
67+
} catch (textError) {
68+
errorMessage = `Failed to fetch Confluence pages: ${response.status} ${response.statusText}`
69+
}
5170
}
5271

5372
return NextResponse.json({ error: errorMessage }, { status: response.status })

0 commit comments

Comments
 (0)