import requests
import json
import logging

logger = logging.getLogger(__name__)

class SlackSender:
    def __init__(self, config):
        self.config = config
        self.slack_webhook_url = config.get('slack_webhook_url')

    def send_slack_message(self, message):
        if not self.config.get('enabled', False):
            logger.warning("Slack alerts are disabled.")
            return

        try:
            payload = {"text": message}
            response = requests.post(
                self.slack_webhook_url,
                data=json.dumps(payload),
                headers={'Content-Type': 'application/json'}
            )
            response.raise_for_status()  # Raise HTTPError for bad responses (4xx or 5xx)
            logger.info("Slack message sent successfully.")
        except requests.exceptions.RequestException as e:
            logger.error(f"Failed to send Slack message: {e}")

if __name__ == '__main__':
    # Example usage (replace with actual webhook URL)
    logging.basicConfig(level=logging.INFO)
    config = {
        'enabled': False, # Set to True to enable Slack
        'slack_webhook_url': 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
    }

    slack_sender = SlackSender(config)
    slack_sender.send_slack_message(
        message='This is a test message from AIVA to Slack.'
    )
