improvement(tools): fixed some confluence tool issues

This commit is contained in:
Waleed Latif
2025-03-25 16:17:10 -07:00
parent 28e7be1ce7
commit 7a2a721932
2 changed files with 111 additions and 3 deletions
@@ -0,0 +1,89 @@
import { NextResponse } from 'next/server'
export async function POST(request: Request) {
try {
const { domain, accessToken, pageId } = await request.json()
if (!domain) {
return NextResponse.json({ error: 'Domain is required' }, { status: 400 })
}
if (!accessToken) {
return NextResponse.json({ error: 'Access token is required' }, { status: 400 })
}
if (!pageId) {
return NextResponse.json({ error: 'Page ID is required' }, { status: 400 })
}
// Log request details for debugging
console.log('Request details:', {
domain,
tokenLength: accessToken ? accessToken.length : 0,
pageId,
})
// Build the URL - using the same format as retrieve.ts
const url = `https://${domain}/wiki/api/v2/pages/${pageId}?expand=body.view`
console.log(`Fetching Confluence page from: ${url}`)
// Make the request to Confluence API
const response = await fetch(url, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
Authorization: `Bearer ${accessToken}`,
},
})
console.log('Response status:', response.status, response.statusText)
if (!response.ok) {
console.error(`Confluence API error: ${response.status} ${response.statusText}`)
let errorMessage
try {
const errorData = await response.json()
console.error('Error details:', JSON.stringify(errorData, null, 2))
errorMessage = errorData.message || `Failed to fetch Confluence page (${response.status})`
} catch (e) {
console.error('Could not parse error response as JSON:', e)
// Try to get the response text for more context
try {
const text = await response.text()
console.error('Response text:', text)
errorMessage = `Failed to fetch Confluence page: ${response.status} ${response.statusText}`
} catch (textError) {
errorMessage = `Failed to fetch Confluence page: ${response.status} ${response.statusText}`
}
}
return NextResponse.json({ error: errorMessage }, { status: response.status })
}
const data = await response.json()
console.log(`Successfully fetched page: ${data.id} - ${data.title}`)
return NextResponse.json({
file: {
id: data.id,
name: data.title,
mimeType: 'confluence/page',
url: data._links?.webui || '',
modifiedTime: data.version?.createdAt || '',
spaceId: data.spaceId,
webViewLink: data._links?.webui || '',
content: data.body?.view?.value || '',
},
})
} catch (error) {
console.error('Error fetching Confluence page:', error)
return NextResponse.json(
{ error: (error as Error).message || 'Internal server error' },
{ status: 500 }
)
}
}
@@ -12,6 +12,14 @@ export async function POST(request: Request) {
return NextResponse.json({ error: 'Access token is required' }, { status: 400 })
}
// Log request details for debugging
console.log('Request details:', {
domain,
tokenLength: accessToken ? accessToken.length : 0,
hasTitle: !!title,
limit,
})
// Build the URL with query parameters
const baseUrl = `https://${domain}/wiki/api/v2/pages`
const queryParams = new URLSearchParams()
@@ -29,7 +37,7 @@ export async function POST(request: Request) {
console.log(`Fetching Confluence pages from: ${url}`)
// Make the request to Confluence API
// Make the request to Confluence API with OAuth Bearer token
const response = await fetch(url, {
method: 'GET',
headers: {
@@ -38,16 +46,27 @@ export async function POST(request: Request) {
},
})
console.log('Response status:', response.status, response.statusText)
if (!response.ok) {
console.error(`Confluence API error: ${response.status} ${response.statusText}`)
let errorMessage
try {
const errorData = await response.json()
console.error('Error details:', JSON.stringify(errorData, null, 2))
errorMessage = errorData.message || `Failed to fetch Confluence pages (${response.status})`
console.error('Error details:', errorData)
} catch (e) {
errorMessage = `Failed to fetch Confluence pages: ${response.status} ${response.statusText}`
console.error('Could not parse error response as JSON:', e)
// Try to get the response text for more context
try {
const text = await response.text()
console.error('Response text:', text)
errorMessage = `Failed to fetch Confluence pages: ${response.status} ${response.statusText}`
} catch (textError) {
errorMessage = `Failed to fetch Confluence pages: ${response.status} ${response.statusText}`
}
}
return NextResponse.json({ error: errorMessage }, { status: response.status })