import logging

import requests

from personal_data import secrets

logger = logging.getLogger(__name__)

MAILGUN_API_ENDPOINT = 'https://api.mailgun.net/v3/{mailgun_domain}/messages'

FROM_MAIL_NAME = 'Personal Scrapers'
FROM_MAIL_USERNAME = 'scrapers'


def send_email(session: requests.Session, subject: str, text: str):
    if subject == '':
        msg = 'Subject must not be empty'
        raise ValueError(msg)
    if text == '':
        msg = 'Text must not be empty'
        raise ValueError(msg)

    logger.info('Sending email using mailgun!')

    data = {
        'from': f'{FROM_MAIL_NAME} <{FROM_MAIL_USERNAME}@{secrets.MAILGUN_DOMAIN}>',
        'to': [secrets.MAILGUN_RECIPIENT],
        'subject': subject,
        'text': text,
    }
    url = MAILGUN_API_ENDPOINT.format(mailgun_domain=secrets.MAILGUN_DOMAIN)
    response = session.post(
        url,
        auth=('api', secrets.MAILGUN_API_KEY),
        data=data,
    )
    response.raise_for_status()
    logger.info('Email sent!')
    return response