mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-28 13:00:56 +03:00
@@ -4,6 +4,7 @@ import FormData from 'form-data'
|
||||
import * as querystring from 'querystring'
|
||||
import { getCredentialData, getCredentialParam } from '../../../src/utils'
|
||||
import { secureAxiosRequest } from '../../../src/httpSecurity'
|
||||
import JSON5 from 'json5'
|
||||
|
||||
class HTTP_Agentflow implements INode {
|
||||
label: string
|
||||
@@ -19,34 +20,13 @@ class HTTP_Agentflow implements INode {
|
||||
credential: INodeParams
|
||||
inputs: INodeParams[]
|
||||
|
||||
private sanitizeJsonString(jsonString: string): string {
|
||||
// Remove common problematic escape sequences that are not valid JSON
|
||||
let sanitized = jsonString
|
||||
// Remove escaped square brackets (not valid JSON)
|
||||
.replace(/\\(\[|\])/g, '$1')
|
||||
// Fix unquoted string values in JSON (simple case)
|
||||
.replace(/:\s*([a-zA-Z][a-zA-Z0-9]*)\s*([,}])/g, ': "$1"$2')
|
||||
// Fix trailing commas
|
||||
.replace(/,(\s*[}\]])/g, '$1')
|
||||
|
||||
return sanitized
|
||||
}
|
||||
|
||||
private parseJsonBody(body: string): any {
|
||||
try {
|
||||
// First try to parse as-is
|
||||
return JSON.parse(body)
|
||||
return JSON5.parse(body)
|
||||
} catch (error) {
|
||||
try {
|
||||
// If that fails, try to sanitize and parse
|
||||
const sanitized = this.sanitizeJsonString(body)
|
||||
return JSON.parse(sanitized)
|
||||
} catch (sanitizeError) {
|
||||
// If sanitization also fails, throw the original error with helpful message
|
||||
throw new Error(
|
||||
`Invalid JSON format in body. Original error: ${error.message}. Please ensure your JSON is properly formatted with quoted strings and valid escape sequences.`
|
||||
)
|
||||
}
|
||||
throw new Error(
|
||||
`Invalid JSON format in body. Original error: ${error.message}. Please ensure your JSON is properly formatted with quoted strings and valid escape sequences.`
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user