#!/usr/bin/python
# -*- coding: utf-8 -*-

import json
import os
from rivista.xmpp.utilities import XmppUtilities

class JsonIndex:

    def generate_json(iq, directory_cache_json):
        """Create a JSON file from node items."""
        json_data = []
        pubsub = iq['from'].bare
        node = iq['pubsub']['items']['node']
        entries = iq['pubsub']['items']
        for entry in entries:
            item_id = entry['id']
            item_payload = entry['payload']
            namespace = '{http://www.w3.org/2005/Atom}'
            title = item_payload.find(namespace + 'title')
            title_text = '*** No Title ***' if title == None else title.text
            # updated = item.find(namespace + 'updated')
            # updated = None if updated == None else updated.text
            # if updated: updated = datetime.datetime.fromisoformat(updated)
            link_href = XmppUtilities.form_an_item_link(pubsub, node, item_id)
            # link = item.find(namespace + 'link')
            # link_href = '' if link == None else link.attrib['href']
            json_data_entry = {'title' : title_text,
                               'link' : link_href}
            json_data.append(json_data_entry)
            #if len(json_data) > 6: break
        directory = os.path.join(directory_cache_json, pubsub)
        if not os.path.exists(directory):
            os.mkdir(directory)
        filename = os.path.join(directory_cache_json, pubsub, f'{node}.json')
        
        with open(filename, 'w', encoding='utf-8') as f:
            json.dump(json_data, f, ensure_ascii=False, indent=4)
