feat: add soap core domain model
This commit is contained in:
@@ -1352,6 +1352,7 @@ impl AdminService {
|
||||
Protocol::Graphql,
|
||||
Protocol::Grpc,
|
||||
Protocol::Websocket,
|
||||
Protocol::Soap,
|
||||
]
|
||||
.into_iter()
|
||||
.map(protocol_capability_view)
|
||||
@@ -3607,6 +3608,7 @@ fn validate_protocol_target(protocol: Protocol, target: &Target) -> Result<(), A
|
||||
| (Protocol::Graphql, Target::Graphql(_))
|
||||
| (Protocol::Grpc, Target::Grpc(_))
|
||||
| (Protocol::Websocket, Target::Websocket(_))
|
||||
| (Protocol::Soap, Target::Soap(_))
|
||||
);
|
||||
|
||||
if is_match {
|
||||
@@ -3834,6 +3836,7 @@ fn demo_grpc_operation_payload() -> OperationPayload {
|
||||
protocol_options: Some(crank_core::ProtocolOptions {
|
||||
grpc: Some(crank_core::GrpcProtocolOptions { use_tls: false }),
|
||||
websocket: None,
|
||||
soap: None,
|
||||
}),
|
||||
streaming: None,
|
||||
},
|
||||
@@ -4044,6 +4047,7 @@ fn protocol_capability_view(protocol: Protocol) -> ProtocolCapabilityView {
|
||||
let supports_upload_artifacts = match protocol {
|
||||
Protocol::Rest | Protocol::Graphql | Protocol::Websocket => Vec::new(),
|
||||
Protocol::Grpc => vec!["proto".to_owned(), "descriptor_set".to_owned()],
|
||||
Protocol::Soap => vec!["wsdl".to_owned(), "xsd".to_owned()],
|
||||
};
|
||||
|
||||
ProtocolCapabilityView {
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
<option value="graphql">GraphQL</option>
|
||||
<option value="grpc">gRPC</option>
|
||||
<option value="websocket">WebSocket</option>
|
||||
<option value="soap">SOAP</option>
|
||||
</select>
|
||||
<div class="form-hint" data-i18n="workspace_setup.protocol_hint">Pre-selected in the operation wizard.</div>
|
||||
</div>
|
||||
|
||||
+2
-2
@@ -181,13 +181,13 @@
|
||||
<svg class="chevron" width="10" height="10"><use href="icons/general/chevron-down.svg#icon"/></svg>
|
||||
</button>
|
||||
<div class="dropdown-menu" x-show="openDropdown === 'protocol'" x-transition>
|
||||
<template x-for="p in ['rest','graphql','grpc','websocket']" :key="p">
|
||||
<template x-for="p in ['rest','graphql','grpc','websocket','soap']" :key="p">
|
||||
<button
|
||||
class="dropdown-item"
|
||||
:class="{ selected: filterProtocol === p }"
|
||||
@click="setProtocol(p)"
|
||||
>
|
||||
<span x-text="p === 'rest' ? 'REST' : p === 'graphql' ? 'GraphQL' : p === 'grpc' ? 'gRPC' : 'WebSocket'"></span>
|
||||
<span x-text="p === 'rest' ? 'REST' : p === 'graphql' ? 'GraphQL' : p === 'grpc' ? 'gRPC' : p === 'websocket' ? 'WebSocket' : 'SOAP'"></span>
|
||||
<svg class="check" width="12" height="12"><use href="icons/general/check.svg#icon"/></svg>
|
||||
</button>
|
||||
</template>
|
||||
|
||||
@@ -417,6 +417,7 @@ document.addEventListener('alpine:init', function() {
|
||||
if (operation.protocol === 'rest') return 'badge badge-rest';
|
||||
if (operation.protocol === 'graphql') return 'badge badge-graphql';
|
||||
if (operation.protocol === 'websocket') return 'badge badge-rest';
|
||||
if (operation.protocol === 'soap') return 'badge badge-rest';
|
||||
return 'badge badge-grpc';
|
||||
},
|
||||
|
||||
@@ -424,6 +425,7 @@ document.addEventListener('alpine:init', function() {
|
||||
if (operation.protocol === 'rest') return 'REST';
|
||||
if (operation.protocol === 'graphql') return 'GQL';
|
||||
if (operation.protocol === 'websocket') return 'WS';
|
||||
if (operation.protocol === 'soap') return 'SOAP';
|
||||
return 'gRPC';
|
||||
},
|
||||
|
||||
|
||||
@@ -400,6 +400,7 @@ document.addEventListener('alpine:init', function() {
|
||||
}
|
||||
if (operation.protocol === 'graphql') return 'GraphQL';
|
||||
if (operation.protocol === 'websocket') return 'WebSocket';
|
||||
if (operation.protocol === 'soap') return 'SOAP';
|
||||
return 'gRPC';
|
||||
},
|
||||
|
||||
|
||||
@@ -411,6 +411,7 @@ var TRANSLATIONS = {
|
||||
'workspace_setup.custom_protocol.graphql': 'GraphQL',
|
||||
'workspace_setup.custom_protocol.grpc': 'gRPC',
|
||||
'workspace_setup.custom_protocol.websocket': 'WebSocket',
|
||||
'workspace_setup.custom_protocol.soap': 'SOAP',
|
||||
|
||||
// Wizard
|
||||
'wizard.back_catalog': 'Operations',
|
||||
@@ -447,6 +448,8 @@ var TRANSLATIONS = {
|
||||
'wizard.step1.grpc_tagline': 'High-performance binary RPC over HTTP/2. Ideal for low-latency internal services.',
|
||||
'wizard.step1.websocket_name': 'WebSocket',
|
||||
'wizard.step1.websocket_tagline': 'Stateful event streams and push-oriented integrations normalized into bounded MCP streaming tools.',
|
||||
'wizard.step1.soap_name': 'SOAP',
|
||||
'wizard.step1.soap_tagline': 'Enterprise WSDL/XSD service contracts normalized into MCP tools with structured XML mapping.',
|
||||
'wizard.step1.query': 'Query',
|
||||
'wizard.step1.mutation': 'Mutation',
|
||||
'wizard.step1.unary': 'Unary',
|
||||
@@ -1196,6 +1199,7 @@ var TRANSLATIONS = {
|
||||
'workspace_setup.custom_protocol.graphql': 'GraphQL',
|
||||
'workspace_setup.custom_protocol.grpc': 'gRPC',
|
||||
'workspace_setup.custom_protocol.websocket': 'WebSocket',
|
||||
'workspace_setup.custom_protocol.soap': 'SOAP',
|
||||
|
||||
// Wizard
|
||||
'wizard.back_catalog': 'Операции',
|
||||
@@ -1232,6 +1236,8 @@ var TRANSLATIONS = {
|
||||
'wizard.step1.grpc_tagline': 'Высокопроизводительный бинарный RPC поверх HTTP/2. Подходит для низколатентных внутренних сервисов.',
|
||||
'wizard.step1.websocket_name': 'WebSocket',
|
||||
'wizard.step1.websocket_tagline': 'Состояние соединения, event streams и push-oriented интеграции, нормализованные в bounded MCP streaming tools.',
|
||||
'wizard.step1.soap_name': 'SOAP',
|
||||
'wizard.step1.soap_tagline': 'Enterprise WSDL/XSD-контракты, нормализованные в MCP-инструменты со структурированным XML mapping.',
|
||||
'wizard.step1.query': 'Запрос',
|
||||
'wizard.step1.mutation': 'Мутация',
|
||||
'wizard.step1.unary': 'Unary',
|
||||
|
||||
@@ -61,6 +61,9 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
if (protocol === 'websocket' || protocol === 'Websocket') {
|
||||
return 'var(--teal)';
|
||||
}
|
||||
if (protocol === 'soap' || protocol === 'Soap') {
|
||||
return 'var(--blue)';
|
||||
}
|
||||
return 'var(--blue)';
|
||||
}
|
||||
|
||||
@@ -74,6 +77,9 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
if (protocol === 'websocket' || protocol === 'Websocket') {
|
||||
return 'WebSocket';
|
||||
}
|
||||
if (protocol === 'soap' || protocol === 'Soap') {
|
||||
return 'SOAP';
|
||||
}
|
||||
return 'REST';
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var currentStep = 1;
|
||||
var TOTAL_STEPS = 5;
|
||||
var wizardProtocol = 'rest'; // 'rest' | 'graphql' | 'grpc' | 'websocket'
|
||||
var wizardProtocol = 'rest'; // 'rest' | 'graphql' | 'grpc' | 'websocket' | 'soap'
|
||||
var wizardMode = 'create'; // 'create' | 'edit'
|
||||
var wizardEditId = null;
|
||||
var wizardWorkspaceId = null;
|
||||
@@ -36,6 +36,10 @@ function defaultProtocolCapabilities() {
|
||||
supports_execution_modes: ['window', 'session', 'async_job'],
|
||||
supports_transport_behaviors: ['server_stream', 'stateful_session', 'deferred_result'],
|
||||
},
|
||||
soap: {
|
||||
supports_execution_modes: ['unary', 'async_job'],
|
||||
supports_transport_behaviors: ['request_response', 'server_stream', 'deferred_result'],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user