#!/usr/bin/env python
import pika


def get_connection():
    return pika.BlockingConnection(pika.ConnectionParameters(host="localhost"))


def subscribe(
    queue_name,
    topic,
    publish_exchange="soar_publish",
    broadcast_exchange="soar_broadcast",
):
    adm_connection = get_connection()
    admin_channel = adm_connection.channel()
    admin_channel.exchange_declare(exchange=broadcast_exchange, exchange_type="fanout")
    admin_channel.queue_bind(exchange=broadcast_exchange, queue=queue_name)
    sub_connection = get_connection()
    subscriber_channel = sub_connection.channel()
    subscriber_channel.exchange_declare(
        exchange=publish_exchange, exchange_type="topic"
    )
    subscriber_channel.queue_bind(
        exchange=publish_exchange, queue=queue_name, routing_key=topic
    )