#!/usr/bin/env python3
# -*-coding:UTF-8 -*
"""
Importer Class
================

Import Content

"""
import json
import logging
import os
import requests
import sys

from abc import ABC

sys.path.append(os.environ['AIL_BIN'])
#################################
# Import Project packages
#################################
from exporter.abstract_exporter import AbstractExporter
from lib.ail_core import get_ail_uuid

logger = logging.getLogger()

class WebHookExporter(AbstractExporter, ABC):
    def __init__(self, url=''):
        super().__init__()
        self.url = url

    def set_url(self, url):
        self.url = url

    def _export(self, data):
        try:
            response = requests.post(self.url, json=data)
            if response.status_code >= 400:
                logger.error(f"Webhook request failed for {self.url}\nReason: {response.reason}")
        except Exception as e:
            logger.error(f"Webhook request failed for {self.url}\nReason: Something went wrong {e}")


class WebHookExporterTracker(WebHookExporter):

    def __init__(self, url=''):
        super().__init__(url=url)

    # TODO Change exported keys
    def export(self, tracker, obj, matches=[]):
        self.set_url(tracker.get_webhook())
        data = {'version': 0,
                'type': 'tracker:match',
                'ail_uuid': get_ail_uuid(),
                'tracker': {
                    'uuid': tracker.get_uuid(),
                    'type': tracker.get_type(),
                    'tags': list(tracker.get_tags()),
                    'tracker': tracker.get_tracked(),
                },
                'obj': {'type': obj.get_type(),
                        'subtype': obj.get_subtype(r_str=True),
                        'id': obj.get_id(),
                        'tags': list(obj.get_tags()),
                        'url': obj.get_link()
                        },
                }
        if matches:
            data['matches'] = matches

        # data = json.dumps(data)
        self._export(data)