from __future__ import with_statement

import urllib
import xml.dom
from cache import Cache

DEFAULT_URL = "http://hakki.cornelii.org/index.rss"

class Feed(object):
    def __init__(self, url=DEFAULT_URL):
        self.url = url

    @property
    def data(self):
        if not self._data:
            with Cache(url) as c:
                if c.alive():
                    self._data = str(c)
                else:
                    f = urllib.urlopen(self.url)
                    self._data = f.read()

                    self._dom = xml.dom.minidom.parseString(self._data)
                    ttl = self._dom.getElementsByName("ttl")
                    assert len(ttl) == 1
                    ttl = ttl[0]
                    assert len(ttl.childNodes) == 1
                    assert ttl.firstChild.nodeType == ttl.TEXT_NODE
                    ttl = int(ttl.firstChild.data) * 60

                    c.remember(self._data, ttl)
        return self._data

    def __str__(self):
        return self.data


