# Path: bormeparser/exceptions.py
# class BormeDoesntExistException(BormeparserException):
#     pass
# 
# Path: bormeparser/parser.py
# def parse(data, seccion):
#     module = importlib.import_module(DEFAULT_PARSER[seccion][0])
#     parser = getattr(module, DEFAULT_PARSER[seccion][1])
#     if os.path.isfile(data):
#         borme = parser(data).parse()
#     elif data.startswith('http'):
#         # TODO
#         # req = requests.get(data)
#         # content = req.text
#         borme = parser(data).parse()
#     else:
#         raise IOError(data)
# 
#     return borme
# 
# Path: bormeparser/seccion.py
# class SECCION:
#     A = 'A'
#     B = 'B'
#     C = 'C'
# 
#     # TODO: No detecta tipo C, viene el texto comprimido
#     @staticmethod
#     def from_borme(seccion, subseccion):
#         if seccion in ('SECCIÓN PRIMERA', 'SECCIÓN PRIMERA'):
#             if subseccion == 'Actos inscritos':
#                 return SECCION.A
#             elif subseccion == 'Otros actos publicados en el Registro Mercantil':
#                 return SECCION.B
#             else:
#                 raise ValueError('InvalidSeccion: %s %s' % (seccion, subseccion))
#         else:
#             raise ValueError('InvalidSeccion: %s %s' % (seccion, subseccion))


import datetime
import os
import requests
import time
import logging
from lxml import etree
from threading import Thread
from .exceptions import BormeDoesntExistException
from .parser import parse as parse_borme
from .seccion import SECCION
from queue import Queue
    Obtiene las URLs para descargar los BORMEs de la seccion C y formato y fecha indicada

    {'AUMENTO DE CAPITAL': {'BRANDCONT SERVER, S.L.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2310.pdf',
                            'CLUB DEPORTIVO DE BALONCESTO DE SEVILLA, SOCIEDAD ANÓNIMA DEPORTIVA': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2311.pdf'},
     'CONVOCATORIAS DE JUNTAS': {'AF-INCEPAL, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2281.pdf',
                                 'AUTOBUSES INTERURBANOS, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2282.pdf',
                                 'BANCOFAR, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2283.pdf',
                                 'CAP NEGRET, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2284.pdf',
                                 'CENTRO EUROPEO DE EMPRESAS E INNOVACIÓN\nDE ARAGÓN, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2285.pdf'},
     'REDUCCIÓN DE CAPITAL': {'ABENGOA, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2312.pdf',
                              'FONTEDUERO, S.A.U.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2313.pdf'}
    }
    """

    if format == 'xml':
        format_ = 'urlXml'
    elif format in ('htm', 'html'):
        format_ = 'urlHtm'
    elif format == 'pdf':
        format_ = 'urlPdf'
    else:
        raise ValueError('format must be "xml", "htm" or "pdf"')

    url = get_url_xml(date, secure=secure)
    req = requests.get(url)
    protocol = 'https' if secure else 'http'
    content = req.text.encode('iso-8859-1')
    tree = etree.fromstring(content).getroottree()

    if tree.getroot().tag != 'sumario':

# Path: bormeparser/exceptions.py
# class BormeDoesntExistException(BormeparserException):
#     pass
# 
# Path: bormeparser/parser.py
# def parse(data, seccion):
#     module = importlib.import_module(DEFAULT_PARSER[seccion][0])
#     parser = getattr(module, DEFAULT_PARSER[seccion][1])
#     if os.path.isfile(data):
#         borme = parser(data).parse()
#     elif data.startswith('http'):
#         # TODO
#         # req = requests.get(data)
#         # content = req.text
#         borme = parser(data).parse()
#     else:
#         raise IOError(data)
# 
#     return borme
# 
# Path: bormeparser/seccion.py
# class SECCION:
#     A = 'A'
#     B = 'B'
#     C = 'C'
# 
#     # TODO: No detecta tipo C, viene el texto comprimido
#     @staticmethod
#     def from_borme(seccion, subseccion):
#         if seccion in ('SECCIÓN PRIMERA', 'SECCIÓN PRIMERA'):
#             if subseccion == 'Actos inscritos':
#                 return SECCION.A
#             elif subseccion == 'Otros actos publicados en el Registro Mercantil':
#                 return SECCION.B
#             else:
#                 raise ValueError('InvalidSeccion: %s %s' % (seccion, subseccion))
#         else:
#             raise ValueError('InvalidSeccion: %s %s' % (seccion, subseccion))


# Path: bormeparser/download.py
import datetime
import os
import requests
import time
import logging
from lxml import etree
from threading import Thread
from .exceptions import BormeDoesntExistException
from .parser import parse as parse_borme
from .seccion import SECCION
from queue import Queue

    Obtiene las URLs para descargar los BORMEs de la seccion C y formato y fecha indicada

    {'AUMENTO DE CAPITAL': {'BRANDCONT SERVER, S.L.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2310.pdf',
                            'CLUB DEPORTIVO DE BALONCESTO DE SEVILLA, SOCIEDAD ANÓNIMA DEPORTIVA': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2311.pdf'},
     'CONVOCATORIAS DE JUNTAS': {'AF-INCEPAL, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2281.pdf',
                                 'AUTOBUSES INTERURBANOS, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2282.pdf',
                                 'BANCOFAR, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2283.pdf',
                                 'CAP NEGRET, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2284.pdf',
                                 'CENTRO EUROPEO DE EMPRESAS E INNOVACIÓN\nDE ARAGÓN, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2285.pdf'},
     'REDUCCIÓN DE CAPITAL': {'ABENGOA, S.A.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2312.pdf',
                              'FONTEDUERO, S.A.U.': 'https://www.boe.es/borme/dias/2016/04/20/pdfs/BORME-C-2016-2313.pdf'}
    }
    """

    if format == 'xml':
        format_ = 'urlXml'
    elif format in ('htm', 'html'):
        format_ = 'urlHtm'
    elif format == 'pdf':
        format_ = 'urlPdf'
    else:
        raise ValueError('format must be "xml", "htm" or "pdf"')

    url = get_url_xml(date, secure=secure)
    req = requests.get(url)
    protocol = 'https' if secure else 'http'
    content = req.text.encode('iso-8859-1')
    tree = etree.fromstring(content).getroottree()

    if tree.getroot().tag != 'sumario':

        raise BormeDoesntExistException