Skip to content

Commit

Permalink
feat(ns-asyncapi-2-0): add support for WS Operation Binding Obj
Browse files Browse the repository at this point in the history
Refs #387
  • Loading branch information
char0n committed May 28, 2021
1 parent 148aaa5 commit c194516
Show file tree
Hide file tree
Showing 9 changed files with 48 additions and 3 deletions.
2 changes: 1 addition & 1 deletion apidom/packages/apidom-ns-asyncapi-2-0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ Only fully implemented specification objects should be checked here.

- [x] [Server Binding Object](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#server-binding-object)
- [x] [Channel Binding Object](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#channel-binding-object)
- [ ] [Operation Binding Object](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#operation-binding-object) (reserved for future)
- [x] [Operation Binding Object](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#operation-binding-object)
- [ ] [Message Binding Object](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#message-binding-object) (reserved for future)

#### Kafka Bindings
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Attributes, Meta, ObjectElement } from 'minim';

class WebSocketOperationBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'webSocketOperationBinding';
}
}

export default WebSocketOperationBinding;
1 change: 1 addition & 0 deletions apidom/packages/apidom-ns-asyncapi-2-0/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,5 @@ export { default as MqttOperationBindingElement } from './elements/bindings/mqtt
export { default as MqttServerBindingElement } from './elements/bindings/mqtt/MqttServerBinding';
// WebSocket
export { default as WebSocketChannelBindingElement } from './elements/bindings/ws/WebSocketChannelBinding';
export { default as WebSocketOperationBindingElement } from './elements/bindings/ws/WebSocketOperationBinding';
export { default as WebSocketServerBindingElement } from './elements/bindings/ws/WebSocketServerBinding';
2 changes: 2 additions & 0 deletions apidom/packages/apidom-ns-asyncapi-2-0/src/namespace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ import MqttOperationBindingElement from './elements/bindings/mqtt/MqttOperationB
import MqttServerBindingElement from './elements/bindings/mqtt/MqttServerBinding';
// WebSocket
import WebSocketChannelBindingElement from './elements/bindings/ws/WebSocketChannelBinding';
import WebSocketOperationBindingElement from './elements/bindings/ws/WebSocketOperationBinding';
import WebSocketServerBindingElement from './elements/bindings/ws/WebSocketServerBinding';

const asyncApi2_0 = {
Expand Down Expand Up @@ -117,6 +118,7 @@ const asyncApi2_0 = {
base.register('mqttServerBinding', MqttServerBindingElement);
// WebSocket
base.register('webSocketChannelBinding', WebSocketChannelBindingElement);
base.register('webSocketOperationBinding', WebSocketOperationBindingElement);
base.register('webSocketServerBinding', WebSocketServerBindingElement);

return base;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ import MqttOperationBindingElement from '../elements/bindings/mqtt/MqttOperation
import MqttServerBindingElement from '../elements/bindings/mqtt/MqttServerBinding';
// WebSocket
import WebSocketChannelBindingElement from '../elements/bindings/ws/WebSocketChannelBinding';
import WebSocketOperationBindingElement from '../elements/bindings/ws/WebSocketOperationBinding';
import WebSocketServerBindingElement from '../elements/bindings/ws/WebSocketServerBinding';

/**
Expand Down Expand Up @@ -380,6 +381,15 @@ WebSocketChannelBindingElement.refract = createRefractor([
'ChannelBinding',
'$visitor',
]);
WebSocketOperationBindingElement.refract = createRefractor([
'visitors',
'document',
'objects',
'bindings',
'ws',
'OperationBinding',
'$visitor',
]);
WebSocketServerBindingElement.refract = createRefractor([
'visitors',
'document',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ import MqttServerBindingBindingVersionVisitor from './visitors/async-api-2-0/bin
import WebSocketChannelBindingVisitor from './visitors/async-api-2-0/bindings/ws/channel-binding';
import WebSocketChannelBindingMethodVisitor from './visitors/async-api-2-0/bindings/ws/channel-binding/MethodVisitor';
import WebSocketChannelBindingBindingVersionVisitor from './visitors/async-api-2-0/bindings/ws/channel-binding/BindingVersionVisitor';
import WebSocketOperationBindingVisitor from './visitors/async-api-2-0/bindings/ws/operation-binding';
import WebSocketServerBindingVisitor from './visitors/async-api-2-0/bindings/ws/server-binding';

/**
Expand Down Expand Up @@ -496,7 +497,9 @@ const specification = {
bindingVersion: WebSocketChannelBindingBindingVersionVisitor,
},
},
OperationBinding: FallbackVisitor,
OperationBinding: {
$visitor: WebSocketOperationBindingVisitor,
},
MessageBinding: FallbackVisitor,
},
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import stampit from 'stampit';
import { always } from 'ramda';

import WebSocketOperationBindingElement from '../../../../../../elements/bindings/ws/WebSocketOperationBinding';
import FallbackVisitor from '../../../../FallbackVisitor';
import FixedFieldsVisitor from '../../../../generics/FixedFieldsVisitor';

const WebSocketOperationBindingVisitor = stampit(FixedFieldsVisitor, FallbackVisitor, {
props: {
specPath: always(['document', 'objects', 'bindings', 'ws', 'OperationBinding']),
canSupportSpecificationExtensions: false,
},
init() {
this.element = new WebSocketOperationBindingElement();
},
});

export default WebSocketOperationBindingVisitor;
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import FixedFieldsVisitor from '../../../../generics/FixedFieldsVisitor';

const WebSocketServerBindingVisitor = stampit(FixedFieldsVisitor, FallbackVisitor, {
props: {
specPath: always(['document', 'objects', 'bindings', 'ws', 'ChannelBinding']),
specPath: always(['document', 'objects', 'bindings', 'ws', 'OperationBinding']),
canSupportSpecificationExtensions: false,
},
init() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ export const keyMap = {
MqttServerBindingElement: ['content'],
// WebSocket
WebSocketChannelBindingElement: ['content'],
WebSocketOperationBindingElement: ['content'],
WebSocketServerBindingElement: ['content'],
...keyMapBase,
};

0 comments on commit c194516

Please sign in to comment.