# -*- coding: utf-8 -*-
# Copyright: 2016, Ableton AG, Berlin. All rights reserved.
import json

import urllib2

from .fileprocessing import filter_info_files, group_files_by_pivot_most_recent_first


class InfoFileProcessingError(Exception):
    pass


def combine_files(*files):
    res = {}
    for file_ in files:
        name = file_.splitext()[1][1:].split("+")[0]
        with file_.open() as inf:
            res[name] = json.loads(inf.read())
    return json.dumps(res)


def upload_info(endpoint, base):
    for group in group_files_by_pivot_most_recent_first(base):
        files = list(filter_info_files(group))
        data = combine_files(*files)

        for file_ in files:
            file_.remove()

        if endpoint is not None:
            clen = len(data)
            req = urllib2.Request(
                endpoint,
                data,
                {"Content-Type": "application/json", "Content-Length": clen},
            )
            response = urllib2.urlopen(req)
            if response.getcode() != 200:
                raise InfoFileProcessingError()
