Use addEventListener fetch pattern for wws
- Switch to addEventListener('fetch') pattern
- Use response.headers.set() instead of headers object
- wws uses Fetch API event handler pattern
- Avoid URL constructor (not available in wws)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
22
api/index.js
22
api/index.js
@@ -1,7 +1,7 @@
|
||||
// Health check and API info endpoint
|
||||
// Path: /api
|
||||
|
||||
async function handler(request) {
|
||||
const handler = (request) => {
|
||||
const corsHeaders = {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
|
||||
@@ -10,10 +10,14 @@ async function handler(request) {
|
||||
}
|
||||
|
||||
if (request.method === 'OPTIONS') {
|
||||
return new Response('', { headers: corsHeaders })
|
||||
let response = new Response('')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
response.headers.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
|
||||
response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization')
|
||||
return response
|
||||
}
|
||||
|
||||
const response = {
|
||||
const data = {
|
||||
status: 'ok',
|
||||
service: 'mylder-wws',
|
||||
version: '1.0.0',
|
||||
@@ -31,10 +35,12 @@ async function handler(request) {
|
||||
]
|
||||
}
|
||||
|
||||
return new Response(JSON.stringify(response, null, 2), {
|
||||
headers: corsHeaders
|
||||
})
|
||||
let response = new Response(JSON.stringify(data, null, 2))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
return response
|
||||
}
|
||||
|
||||
// ES Module export for wws
|
||||
export default handler
|
||||
addEventListener('fetch', event => {
|
||||
return event.respondWith(handler(event.request))
|
||||
})
|
||||
|
||||
@@ -1,23 +1,20 @@
|
||||
// Chat proxy - routes requests to n8n workflow
|
||||
// Path: /chat
|
||||
|
||||
async function handler(request) {
|
||||
const corsHeaders = {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
|
||||
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
const handler = async (request) => {
|
||||
if (request.method === 'OPTIONS') {
|
||||
return new Response('', { headers: corsHeaders })
|
||||
let response = new Response('')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
response.headers.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
|
||||
response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization')
|
||||
return response
|
||||
}
|
||||
|
||||
if (request.method !== 'POST') {
|
||||
return new Response(JSON.stringify({ error: 'Method not allowed' }), {
|
||||
status: 405,
|
||||
headers: corsHeaders
|
||||
})
|
||||
let response = new Response(JSON.stringify({ error: 'Method not allowed' }))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
return response
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -28,10 +25,10 @@ async function handler(request) {
|
||||
const provider = body.provider || 'zai'
|
||||
|
||||
if (!message) {
|
||||
return new Response(JSON.stringify({ error: 'Message is required' }), {
|
||||
status: 400,
|
||||
headers: corsHeaders
|
||||
})
|
||||
let response = new Response(JSON.stringify({ error: 'Message is required' }))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
return response
|
||||
}
|
||||
|
||||
// Forward to n8n webhook
|
||||
@@ -50,25 +47,27 @@ async function handler(request) {
|
||||
|
||||
const result = await n8nResponse.json()
|
||||
|
||||
return new Response(JSON.stringify({
|
||||
let response = new Response(JSON.stringify({
|
||||
success: true,
|
||||
response: result.response || result,
|
||||
provider: provider,
|
||||
timestamp: new Date().toISOString()
|
||||
}), {
|
||||
headers: corsHeaders
|
||||
})
|
||||
}))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
return response
|
||||
|
||||
} catch (error) {
|
||||
return new Response(JSON.stringify({
|
||||
let response = new Response(JSON.stringify({
|
||||
success: false,
|
||||
error: error.message || 'Internal server error'
|
||||
}), {
|
||||
status: 500,
|
||||
headers: corsHeaders
|
||||
})
|
||||
}))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
return response
|
||||
}
|
||||
}
|
||||
|
||||
// ES Module export for wws
|
||||
export default handler
|
||||
addEventListener('fetch', event => {
|
||||
return event.respondWith(handler(event.request))
|
||||
})
|
||||
|
||||
@@ -1,28 +1,26 @@
|
||||
// Webhook receiver for external integrations
|
||||
// Path: /webhook
|
||||
|
||||
async function handler(request) {
|
||||
const corsHeaders = {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
|
||||
'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Webhook-Secret',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
const handler = async (request) => {
|
||||
if (request.method === 'OPTIONS') {
|
||||
return new Response('', { headers: corsHeaders })
|
||||
let response = new Response('')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
response.headers.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
|
||||
response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Webhook-Secret')
|
||||
return response
|
||||
}
|
||||
|
||||
// GET request - return webhook info
|
||||
if (request.method === 'GET') {
|
||||
return new Response(JSON.stringify({
|
||||
let response = new Response(JSON.stringify({
|
||||
endpoint: '/webhook',
|
||||
method: 'POST',
|
||||
supported_sources: ['gitea', 'stripe', 'supabase', 'default'],
|
||||
usage: 'POST /webhook?source=gitea with JSON body'
|
||||
}, null, 2), {
|
||||
headers: corsHeaders
|
||||
})
|
||||
}, null, 2))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
return response
|
||||
}
|
||||
|
||||
// POST request - receive and forward webhook
|
||||
@@ -42,8 +40,9 @@ async function handler(request) {
|
||||
|
||||
// Get source from query params
|
||||
let source = 'default'
|
||||
if (request.url && request.url.indexOf('?') !== -1) {
|
||||
const queryString = request.url.split('?')[1]
|
||||
const reqUrl = request.url || ''
|
||||
if (reqUrl.indexOf('?') !== -1) {
|
||||
const queryString = reqUrl.split('?')[1]
|
||||
if (queryString) {
|
||||
const params = queryString.split('&')
|
||||
for (let i = 0; i < params.length; i++) {
|
||||
@@ -75,35 +74,35 @@ async function handler(request) {
|
||||
payload: payload,
|
||||
received_at: timestamp
|
||||
})
|
||||
}).catch(function(err) {
|
||||
console.error('Forward failed:', err)
|
||||
})
|
||||
|
||||
return new Response(JSON.stringify({
|
||||
let response = new Response(JSON.stringify({
|
||||
received: true,
|
||||
source: source,
|
||||
timestamp: timestamp
|
||||
}), {
|
||||
headers: corsHeaders
|
||||
})
|
||||
}))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
return response
|
||||
|
||||
} catch (error) {
|
||||
return new Response(JSON.stringify({
|
||||
let response = new Response(JSON.stringify({
|
||||
received: false,
|
||||
error: error.message || 'Parse error'
|
||||
}), {
|
||||
status: 400,
|
||||
headers: corsHeaders
|
||||
})
|
||||
}))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
return response
|
||||
}
|
||||
}
|
||||
|
||||
// Method not allowed
|
||||
return new Response(JSON.stringify({ error: 'Method not allowed' }), {
|
||||
status: 405,
|
||||
headers: corsHeaders
|
||||
})
|
||||
let response = new Response(JSON.stringify({ error: 'Method not allowed' }))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
response.headers.set('Access-Control-Allow-Origin', '*')
|
||||
return response
|
||||
}
|
||||
|
||||
// ES Module export for wws
|
||||
export default handler
|
||||
addEventListener('fetch', event => {
|
||||
return event.respondWith(handler(event.request))
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user