feat: add cURL import for http request node (#8656)

This commit is contained in:
非法操作
2024-11-21 22:25:18 +08:00
committed by GitHub
parent fefda40acf
commit 8b16f07eb0
5 changed files with 218 additions and 9 deletions

View File

@@ -8,11 +8,13 @@ import EditBody from './components/edit-body'
import AuthorizationModal from './components/authorization'
import type { HttpNodeType } from './types'
import Timeout from './components/timeout'
import CurlPanel from './components/curl-panel'
import cn from '@/utils/classnames'
import Field from '@/app/components/workflow/nodes/_base/components/field'
import Split from '@/app/components/workflow/nodes/_base/components/split'
import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars'
import { Settings01 } from '@/app/components/base/icons/src/vender/line/general'
import { FileArrow01 } from '@/app/components/base/icons/src/vender/line/files'
import type { NodePanelProps } from '@/app/components/workflow/types'
import BeforeRunForm from '@/app/components/workflow/nodes/_base/components/before-run-form'
import ResultPanel from '@/app/components/workflow/run/result-panel'
@@ -53,6 +55,10 @@ const Panel: FC<NodePanelProps<HttpNodeType>> = ({
inputVarValues,
setInputVarValues,
runResult,
isShowCurlPanel,
showCurlPanel,
hideCurlPanel,
handleCurlImport,
} = useConfig(id, data)
// To prevent prompt editor in body not update data.
if (!isDataReady)
@@ -64,14 +70,25 @@ const Panel: FC<NodePanelProps<HttpNodeType>> = ({
<Field
title={t(`${i18nPrefix}.api`)}
operations={
<div
onClick={showAuthorization}
className={cn(!readOnly && 'cursor-pointer hover:bg-gray-50', 'flex items-center h-6 space-x-1 px-2 rounded-md ')}
>
{!readOnly && <Settings01 className='w-3 h-3 text-gray-500' />}
<div className='text-xs font-medium text-gray-500'>
{t(`${i18nPrefix}.authorization.authorization`)}
<span className='ml-1 text-gray-700'>{t(`${i18nPrefix}.authorization.${inputs.authorization.type}`)}</span>
<div className='flex'>
<div
onClick={showAuthorization}
className={cn(!readOnly && 'cursor-pointer hover:bg-gray-50', 'flex items-center h-6 space-x-1 px-2 rounded-md ')}
>
{!readOnly && <Settings01 className='w-3 h-3 text-gray-500' />}
<div className='text-xs font-medium text-gray-500'>
{t(`${i18nPrefix}.authorization.authorization`)}
<span className='ml-1 text-gray-700'>{t(`${i18nPrefix}.authorization.${inputs.authorization.type}`)}</span>
</div>
</div>
<div
onClick={showCurlPanel}
className={cn(!readOnly && 'cursor-pointer hover:bg-gray-50', 'flex items-center h-6 space-x-1 px-2 rounded-md ')}
>
{!readOnly && <FileArrow01 className='w-3 h-3 text-gray-500' />}
<div className='text-xs font-medium text-gray-500'>
{t(`${i18nPrefix}.curl.title`)}
</div>
</div>
</div>
}
@@ -180,7 +197,15 @@ const Panel: FC<NodePanelProps<HttpNodeType>> = ({
result={<ResultPanel {...runResult} showSteps={false} />}
/>
)}
</div >
{(isShowCurlPanel && !readOnly) && (
<CurlPanel
nodeId={id}
isShow
onHide={hideCurlPanel}
handleCurlImport={handleCurlImport}
/>
)}
</div>
)
}