Skip to content

Commit

Permalink
feat(ns-asyncapi-2-0): add full support for ServerBindings Object
Browse files Browse the repository at this point in the history
Refs #387
  • Loading branch information
char0n committed May 30, 2021
1 parent fa48929 commit fc1a4d6
Show file tree
Hide file tree
Showing 5 changed files with 174 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 @@ -164,7 +164,7 @@ Only fully implemented specification objects should be checked here.
- [x] [Security Requirement Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#security-requirement-object) (partial)
- [x] [OAuth Flows Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#oauth-flows-object)
- [x] [OAuth Flow Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#oauth-flow-object)
- [ ] [Server Bindings Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#serverBindingsObject) (partial)
- [x] [Server Bindings Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#serverBindingsObject)
- [x] [Parameters Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#parametersObject)
- [x] [Parameter Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#parameterObject)
- [x] [Channel Bindings Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#channel-bindings-object)
Expand Down
127 changes: 127 additions & 0 deletions apidom/packages/apidom-ns-asyncapi-2-0/src/elements/ServerBindings.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,137 @@
import { Attributes, Meta, ObjectElement } from 'minim';

import HttpServerBindingElement from './bindings/http/HttpServerBinding';
import WebSocketServerBindingElement from './bindings/ws/WebSocketServerBinding';
import KafkaServerBindingElement from './bindings/kafka/KafkaServerBinding';
import AmqpServerBindingElement from './bindings/amqp/AmqpServerBinding';
import Amqp1ServerBindingElement from './bindings/amqp1/Amqp1ServerBinding';
import MqttServerBindingElement from './bindings/mqtt/MqttServerBinding';
import Mqtt5ServerBindingElement from './bindings/mqtt5/Mqtt5ServerBinding';
import NatsServerBindingElement from './bindings/nats/NatsServerBinding';
import JmsServerBindingElement from './bindings/jms/JmsServerBinding';
import SnsServerBindingElement from './bindings/sns/SnsServerBinding';
import SqsServerBindingElement from './bindings/sqs/SqsServerBinding';
import StompServerBindingElement from './bindings/stomp/StompServerBinding';
import RedisServerBindingElement from './bindings/redis/RedisServerBinding';
import MercureServerBindingElement from './bindings/mercure/MercureServerBinding';

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

get http(): HttpServerBindingElement | undefined {
return this.get('http');
}

set http(http: HttpServerBindingElement | undefined) {
this.set('http', http);
}

get ws(): WebSocketServerBindingElement | undefined {
return this.get('ws');
}

set ws(ws: WebSocketServerBindingElement | undefined) {
this.set('ws', ws);
}

get kafka(): KafkaServerBindingElement | undefined {
return this.get('kafka');
}

set kafka(kafka: KafkaServerBindingElement | undefined) {
this.set('kafka', kafka);
}

get amqp(): AmqpServerBindingElement | undefined {
return this.get('amqp');
}

set amqp(amqp: AmqpServerBindingElement | undefined) {
this.set('amqp', amqp);
}

get amqp1(): Amqp1ServerBindingElement | undefined {
return this.get('amqp1');
}

set amqp1(amqp1: Amqp1ServerBindingElement | undefined) {
this.set('amqp1', amqp1);
}

get mqtt(): MqttServerBindingElement | undefined {
return this.get('mqtt');
}

set mqtt(mqtt: MqttServerBindingElement | undefined) {
this.set('mqtt', mqtt);
}

get mqtt5(): Mqtt5ServerBindingElement | undefined {
return this.get('mqtt5');
}

set mqtt5(mqtt5: Mqtt5ServerBindingElement | undefined) {
this.set('mqtt5', mqtt5);
}

get nats(): NatsServerBindingElement | undefined {
return this.get('nats');
}

set nats(nats: NatsServerBindingElement | undefined) {
this.set('nats', nats);
}

get jms(): JmsServerBindingElement | undefined {
return this.get('jms');
}

set jms(jms: JmsServerBindingElement | undefined) {
this.set('jms', jms);
}

get sns(): SnsServerBindingElement | undefined {
return this.get('sns');
}

set sns(sns: SnsServerBindingElement | undefined) {
this.set('sns', sns);
}

get sqs(): SqsServerBindingElement | undefined {
return this.get('sqs');
}

set sqs(sqs: SqsServerBindingElement | undefined) {
this.set('sqs', sqs);
}

get stomp(): StompServerBindingElement | undefined {
return this.get('stomp');
}

set stomp(stomp: StompServerBindingElement | undefined) {
this.set('stomp', stomp);
}

get redis(): RedisServerBindingElement | undefined {
return this.get('redis');
}

set redis(redis: RedisServerBindingElement | undefined) {
this.set('redis', redis);
}

get mercure(): MercureServerBindingElement | undefined {
return this.get('mercure');
}

set mercure(mercure: MercureServerBindingElement | undefined) {
this.set('mercure', mercure);
}
}

export default ServerBindings;
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,50 @@ const specification = {
},
ServerBindings: {
$visitor: ServerBindingsVisitor,
fixedFields: {},
fixedFields: {
http: {
$ref: '#/visitors/document/objects/bindings/http/ServerBinding',
},
ws: {
$ref: '#/visitors/document/objects/bindings/ws/ServerBinding',
},
kafka: {
$ref: '#/visitors/document/objects/bindings/kafka/ServerBinding',
},
amqp: {
$ref: '#/visitors/document/objects/bindings/amqp/ServerBinding',
},
amqp1: {
$ref: '#/visitors/document/objects/bindings/amqp1/ServerBinding',
},
mqtt: {
$ref: '#/visitors/document/objects/bindings/mqtt/ServerBinding',
},
mqtt5: {
$ref: '#/visitors/document/objects/bindings/mqtt5/ServerBinding',
},
nats: {
$ref: '#/visitors/document/objects/bindings/nats/ServerBinding',
},
jms: {
$ref: '#/visitors/document/objects/bindings/jms/ServerBinding',
},
sns: {
$ref: '#/visitors/document/objects/bindings/sns/ServerBinding',
},
sqs: {
$ref: '#/visitors/document/objects/bindings/sqs/ServerBinding',
},
stomp: {
$ref: '#/visitors/document/objects/bindings/stomp/ServerBinding',
},
redis: {
$ref: '#/visitors/document/objects/bindings/redis/ServerBinding',
},
mercure: {
$ref: '#/visitors/document/objects/bindings/mercure/ServerBinding',
},
},
},
Parameters: {
$visitor: ParametersVisitor,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import ServerBindingsElement from '../../../../elements/ServerBindings';
const ServerBindingsVisitor = stampit(FixedFieldsVisitor, FallbackVisitor, {
props: {
specPath: always(['document', 'objects', 'ServerBindings']),
canSupportSpecificationExtensions: true,
},
init() {
this.element = new ServerBindingsElement();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export const keyMap = {
SchemaElement: ['content'],
SecurityRequirementElement: ['content'],
ServerElement: ['content'],
ServerBindingElement: ['content'],
ServerBindingsElement: ['content'],
ServersElement: ['content'],
ServerVariableElement: ['content'],
TagElement: ['content'],
Expand Down

0 comments on commit fc1a4d6

Please sign in to comment.