import json
import logging.config
import os

default_config = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "simple": {
            "format": "%(asctime)s :: %(name)s :: %(levelname)s :: %(message)s"
        }
    },

    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "DEBUG",
            "formatter": "simple",
            "stream": "ext://sys.stdout"
        },

        "info_file_handler": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "INFO",
            "formatter": "simple",
            "filename": "gee_assets_info.log",
            "maxBytes": 10485760,
            "backupCount": 20,
            "encoding": "utf8"
        },

        "error_file_handler": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "ERROR",
            "formatter": "simple",
            "filename": "gee_assets_errors.log",
            "maxBytes": 10485760,
            "backupCount": 20,
            "encoding": "utf8"
        }
    },

    "root": {
        "level": "INFO",
        "handlers": ["console", "info_file_handler", "error_file_handler"]
    }
}

def setup_logging():
    path = os.path.join(os.path.dirname(__file__), 'logconfig.json')
    try:
        with open(path, 'rt') as f:
            config = json.load(f)
    except Exception as e:
        logging.exception('Could not load logconfig.json. Loading default logging configuration.')
        config = default_config
    logging.config.dictConfig(config)

def get_credential(file_path):
    """
        Read credential json file and return
        username and password
    """
    with open(file_path) as json_file:
        config = json.load(json_file)
    assert "username" in config.keys()
    assert "password" in config.keys()

    return config["username"], config["password"]

