import redis
from redis.connection import Connection, SSLConnection

redis_client = redis.Redis()


def init_app(app):
    connection_class = Connection
    if app.config.get("REDIS_USE_SSL"):
        connection_class = SSLConnection

    redis_client.connection_pool = redis.ConnectionPool(
        **{
            "host": app.config.get("REDIS_HOST"),
            "port": app.config.get("REDIS_PORT"),
            "username": app.config.get("REDIS_USERNAME"),
            "password": app.config.get("REDIS_PASSWORD"),
            "db": app.config.get("REDIS_DB"),
            "encoding": "utf-8",
            "encoding_errors": "strict",
            "decode_responses": False,
        },
        connection_class=connection_class,
    )

    app.extensions["redis"] = redis_client