import logging
from flask import Flask, render_template
from redis import Redis
from pygelf import GelfTcpHandler, GelfUdpHandler, GelfTlsHandler, GelfHttpHandler
import os

app = Flask(__name__)

visitor_count = 0

# CONF
cache_port = os.getenv('CACHE_PORT')
cache_host = os.getenv('CACHE_HOST')
app_port = os.getenv('APP_PORT')

def set_logger():
    log_handler = GelfUdpHandler(host='logstash' , port=12201)
    app.logger.addHandler(log_handler)
    # app.logger.setLevel(logging.INFO)

# GET REDIS
def get_redis_connection():
    return Redis(host=cache_host, port=cache_port)

def init_visitor_count(redis_db: Redis):
    key = 'visitor_count'
    if not redis_db.exists(key):
        redis_db.set(key, 0)

# MAIN ROUTE
@app.route('/')
def index():
    try:
        set_logger()
    except Exception as e:
        print('Error: logger not available')

    try:
        redis_db = get_redis_connection()
        init_visitor_count(redis_db)
        visitor_count = redis_db.incr('visitor_count')
        app.logger.info("Visit page")
    except Exception as e:
        return render_template('erreur.html', message=str(e))
    
    if visitor_count == 10:
        return render_template('winner.html')

    return render_template('index.html', visitor_count=visitor_count)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=app_port)