# 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
def download_xml(date, filename, secure=USE_HTTPS):
    url = get_url_xml(date, secure=secure)
    downloaded = download_url(url, filename)
    return downloaded


def download_pdfs(date, path, provincia=None, seccion=None, secure=USE_HTTPS):
    """ Descarga BORMEs PDF de las provincia, la seccion y la fecha indicada """
    urls = get_url_pdfs(date, provincia=provincia, seccion=seccion, secure=secure)
    files = download_urls(urls, path)
    return True, files


# date = (year, month, date) or datetime.date
# seccion = ('A', 'B', 'C') or SECCION.A, SECCION.B, ...
# province = class PROVINCIA: PROVINCIA.MALAGA, PROVINCIA.MADRID, ...
def download_pdf(date, filename, seccion, provincia, parse=False):
    """ Descarga BORME PDF de la provincia, la seccion y la fecha indicada """
    url = get_url_pdf(date, seccion, provincia)
    downloaded = download_url(url, filename)

    if downloaded:
        logger.debug('Downloaded: {}'.format(filename))
    else:
        logger.debug('File already exists: {}'.format(filename))

    if not parse:
        return False

    if parse:

# 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

def download_xml(date, filename, secure=USE_HTTPS):
    url = get_url_xml(date, secure=secure)
    downloaded = download_url(url, filename)
    return downloaded


def download_pdfs(date, path, provincia=None, seccion=None, secure=USE_HTTPS):
    """ Descarga BORMEs PDF de las provincia, la seccion y la fecha indicada """
    urls = get_url_pdfs(date, provincia=provincia, seccion=seccion, secure=secure)
    files = download_urls(urls, path)
    return True, files


# date = (year, month, date) or datetime.date
# seccion = ('A', 'B', 'C') or SECCION.A, SECCION.B, ...
# province = class PROVINCIA: PROVINCIA.MALAGA, PROVINCIA.MADRID, ...
def download_pdf(date, filename, seccion, provincia, parse=False):
    """ Descarga BORME PDF de la provincia, la seccion y la fecha indicada """
    url = get_url_pdf(date, seccion, provincia)
    downloaded = download_url(url, filename)

    if downloaded:
        logger.debug('Downloaded: {}'.format(filename))
    else:
        logger.debug('File already exists: {}'.format(filename))

    if not parse:
        return False

    if parse:

        return parse_borme(filename, seccion)