from typing import Dict

from urllib3.util import parse_url

from .exceptions import InvalidEmailUrlScheme


def parse_email_url(email_url: str) -> Dict:
    parsed_url = parse_url(email_url)
    if parsed_url.scheme != 'smtp':
        raise InvalidEmailUrlScheme()
    credentials = parsed_url.auth.split(':')
    return {
        'host': parsed_url.host,
        'port': parsed_url.port,
        'use_tls': True if parsed_url.query == 'tls=True' else False,
        'use_ssl': True if parsed_url.query == 'ssl=True' else False,
        'username': credentials[0],
        'password': credentials[1],
    }
