83 lines
2.6 KiB
JavaScript
83 lines
2.6 KiB
JavaScript
/**
|
|
* 将 KeyValueEditor 的行数据转为批量文本
|
|
*/
|
|
export function rowsToBulkText(rows) {
|
|
if (!rows || !rows.length) return ''
|
|
return rows.map(row => {
|
|
const prefix = row.enabled === false ? '#' : ''
|
|
return `${prefix}${row.key || ''}:${row.value || ''}`
|
|
}).join('\n')
|
|
}
|
|
|
|
/**
|
|
* 将批量文本解析为行数据
|
|
*/
|
|
export function bulkTextToRows(text) {
|
|
if (!text || !text.trim()) return []
|
|
return text.split('\n').filter(line => line.trim()).map(line => {
|
|
let enabled = true
|
|
let content = line
|
|
if (content.startsWith('#')) {
|
|
enabled = false
|
|
content = content.substring(1)
|
|
}
|
|
const idx = content.indexOf(':')
|
|
const key = idx >= 0 ? content.substring(0, idx).trim() : content.trim()
|
|
const value = idx >= 0 ? content.substring(idx + 1).trim() : ''
|
|
return { enabled, key, value, description: '' }
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 将 HttpRequestDesigner 的数据序列化为存储格式
|
|
*/
|
|
export function serializeDesigner(designer) {
|
|
const result = {
|
|
method: designer.method || 'GET',
|
|
path: designer.pathTemplate || '',
|
|
contentType: designer.contentType || ''
|
|
}
|
|
if (designer.params && designer.params.length) {
|
|
result.params = designer.params.filter(p => p.key)
|
|
}
|
|
if (designer.headers && designer.headers.length) {
|
|
result.headers = designer.headers.filter(h => h.key)
|
|
}
|
|
if (designer.body) {
|
|
result.body = { mode: designer.body.mode || 'none' }
|
|
if (designer.body.mode === 'form-data' && designer.body.formData) {
|
|
result.body.formData = designer.body.formData.filter(f => f.key)
|
|
}
|
|
if (designer.body.mode === 'x-www-form-urlencoded' && designer.body.urlencoded) {
|
|
result.body.urlencoded = designer.body.urlencoded.filter(f => f.key)
|
|
}
|
|
if (designer.body.mode === 'raw-json') {
|
|
result.body.raw = designer.body.raw || ''
|
|
}
|
|
}
|
|
if (designer.config && designer.config.length) {
|
|
result.config = designer.config.filter(c => c.key)
|
|
}
|
|
return result
|
|
}
|
|
|
|
/**
|
|
* 将存储格式反序列化为 HttpRequestDesigner 数据
|
|
*/
|
|
export function deserializeDesigner(data) {
|
|
return {
|
|
method: (data && data.method) || 'GET',
|
|
pathTemplate: (data && data.path) || '',
|
|
contentType: (data && data.contentType) || '',
|
|
params: (data && data.params) || [],
|
|
headers: (data && data.headers) || [],
|
|
body: {
|
|
mode: (data && data.body && data.body.mode) || 'none',
|
|
formData: (data && data.body && data.body.formData) || [],
|
|
urlencoded: (data && data.body && data.body.urlencoded) || [],
|
|
raw: (data && data.body && data.body.raw) || ''
|
|
},
|
|
config: (data && data.config) || []
|
|
}
|
|
}
|