# -*- coding: utf-8 -*-
from markdown import Extension
import oembed
from mdx_oembed.endpoints import ENDPOINTS
from mdx_oembed.inlinepatterns import OEmbedLinkPattern, OEMBED_LINK_RE


AVAILABLE_ENDPOINTS = ENDPOINTS.keys()


class OEmbedExtension(Extension):

    config = {
        'endpoints': [
            [],
            "A list of additional oEmbed endpoints to support",
        ],
        'allowed_endpoints': [
            AVAILABLE_ENDPOINTS,
            "A list of oEmbed endpoints to allow. Possible values are "
            "{}.".format(', '.join(AVAILABLE_ENDPOINTS)),
        ],
    }

    def extendMarkdown(self, md, md_globals):
        self.oembed_consumer = self.prepare_oembed_consumer()
        link_pattern = OEmbedLinkPattern(OEMBED_LINK_RE, md,
                                         self.oembed_consumer)
        md.inlinePatterns.add('oembed_link', link_pattern, '<image_link')

    def prepare_oembed_consumer(self):
# -*- coding: utf-8 -*-
from markdown import Extension
import oembed
from mdx_oembed.endpoints import ENDPOINTS
from mdx_oembed.inlinepatterns import OEmbedLinkPattern, OEMBED_LINK_RE


AVAILABLE_ENDPOINTS = ENDPOINTS.keys()


class OEmbedExtension(Extension):

    config = {
        'allowed_endpoints': [
            AVAILABLE_ENDPOINTS,
            "A list of oEmbed endpoints to allow. Possible values are "
            "{}.".format(', '.join(AVAILABLE_ENDPOINTS)),
        ],
    }

    def extendMarkdown(self, md, md_globals):
        self.oembed_consumer = self.prepare_oembed_consumer()
        link_pattern = OEmbedLinkPattern(OEMBED_LINK_RE, md,
                                         self.oembed_consumer)
        md.inlinePatterns.add('oembed_link', link_pattern, '<image_link')

    def prepare_oembed_consumer(self):
        allowed_endpoints = self.getConfig('allowed_endpoints',
                                           AVAILABLE_ENDPOINTS)
        consumer = oembed.OEmbedConsumer()
        [consumer.addEndpoint(v)