default:
  app:
    name: {{ asyncapi.info().title() }}
    version: {{ asyncapi.info().version() }}
{% if asyncapi.server(params.server).protocol() === "ws" %}
  ws:
    port: {{ asyncapi.server(params.server).url() | replaceVariablesWithValues(asyncapi.server(params.server).variables()) | port(80) }}
    path: /ws
    topicSeparator: '__'
{% endif %}
{%- if asyncapi.server(params.server).protocol() !== "ws" %}
  broker:
{%- endif %}
{%- if asyncapi.server(params.server).protocol() === "amqp" %}
    amqp:
      exchange:
      username:
      password:
      host: {{ asyncapi.server(params.server).url() | replaceVariablesWithValues(asyncapi.server(params.server).variables())  | host }}
      port:
      topics: {{ asyncapi | channelNamesWithPublish | toAmqpTopic | dump | safe }}
      queue: {{ asyncapi.info().title() | queueName(asyncapi.info().version()) }}
      queueOptions:
        exclusive: false
        durable: true
        autoDelete: true
{%- endif %}
{%- if asyncapi.server(params.server).protocol() === "mqtt" %}
    mqtt:
      url: mqtt://{{ asyncapi.server(params.server).url() | replaceVariablesWithValues(asyncapi.server(params.server).variables()) | stripProtocol  }}
      topics: {{ asyncapi | channelNamesWithPublish | toMqttTopic | dump | safe }}
      qos:
      protocol: mqtt
      retain:
      subscribe: true
{%- endif %}
{%- if asyncapi.server(params.server).protocol() === "kafka" %}
    kafka:
      clientId: {{ asyncapi.info().title() | camelCase }}
      brokers:
        - {{ asyncapi.server(params.server).url() | replaceVariablesWithValues(asyncapi.server(params.server).variables()) | host }}
      consumerOptions:
        groupId: {{ asyncapi.info().title() | camelCase }}
      topics:
      {%- for topic in asyncapi | channelNamesWithPublish %}
        - {{ topic | toKafkaTopic }}
      {%- endfor %}
      topicSeparator: '__'
      topicPrefix:
{%- endif %}

development:

test:

staging:

production:
{%- if asyncapi.server(params.server).protocol() === "kafka" %}
  broker:
    kafka:
      ssl:
        rejectUnauthorized: true
      sasl:
        mechanism: 'plain'
        username:
        password:
{%- endif %}
