Compare commits
2 Commits
a117da20b1
...
b3709c64e9
Author | SHA1 | Date |
---|---|---|
Stephane Bortzmeyer | b3709c64e9 | |
Stephane Bortzmeyer | 46538fa620 |
11
ianardap.py
11
ianardap.py
|
@ -49,13 +49,14 @@ def parse_expires(h):
|
|||
|
||||
class IanaRDAPDatabase():
|
||||
|
||||
def __init__(self, category="domains", maxage=MAXAGE, cachedir=CACHE,
|
||||
def __init__(self, category="domains", maxage=None, cachedir=CACHE,
|
||||
pickleformat=False):
|
||||
"""Retrieves the IANA database, if not already cached. maxage is in
|
||||
hours. The cachedir is a directory (it will be created if not already
|
||||
existant). pickleformat is not the default because it is not really
|
||||
faster *and* it introduces security risks if someone can write in the
|
||||
file (see the documentation of the module).
|
||||
|
||||
"""
|
||||
|
||||
cache_valid = False
|
||||
|
@ -69,6 +70,12 @@ file (see the documentation of the module).
|
|||
self.cachefile = cachefile + ".json"
|
||||
self.lockname = self.cachefile + ".lock"
|
||||
self.expirationfile = self.cachefile + ".expires"
|
||||
if maxage is not None:
|
||||
with open(self.expirationfile, 'w'):
|
||||
self.expirationtime = time.mktime((datetime.datetime.now() + \
|
||||
datetime.timedelta(hours=maxage)).timetuple())
|
||||
os.utime(self.expirationfile,
|
||||
times = (self.expirationtime, self.expirationtime))
|
||||
loaded = False
|
||||
tests = 0
|
||||
errmsg = "No error"
|
||||
|
@ -186,7 +193,7 @@ file (see the documentation of the module).
|
|||
|
||||
def find(self, id):
|
||||
"""Get the RDAP server(s), as an array, for a given identifier. None
|
||||
if there is none. TODO port check_expire on that"""
|
||||
if there is none."""
|
||||
if self.category == "domains":
|
||||
domain = id
|
||||
if domain.endswith("."):
|
||||
|
|
|
@ -17,13 +17,13 @@ def test_basic():
|
|||
len(database.services) > 1000
|
||||
|
||||
def test_alternative_cache():
|
||||
tmpfile = tempfile.NamedTemporaryFile(suffix=".testianacache", delete=False)
|
||||
database = ianardap.IanaRDAPDatabase(cachefile=tmpfile.name, maxage=0)
|
||||
assert os.path.exists(tmpfile.name) and \
|
||||
datetime.datetime.fromtimestamp(os.path.getmtime(tmpfile.name)) > \
|
||||
tmpdir = tempfile.TemporaryDirectory(suffix=".testianacaches")
|
||||
database = ianardap.IanaRDAPDatabase(cachedir=tmpdir.name, maxage=0)
|
||||
assert os.path.exists(database.cachefile) and \
|
||||
datetime.datetime.fromtimestamp(os.path.getmtime(database.cachefile)) > \
|
||||
(datetime.datetime.now() - datetime.timedelta(minutes=1))
|
||||
os.remove(tmpfile.name)
|
||||
os.remove(tmpfile.name + ".json.lock")
|
||||
os.remove(database.cachefile)
|
||||
os.remove(database.cachefile + ".lock")
|
||||
|
||||
def test_refresh():
|
||||
# Force a resfresh
|
||||
|
@ -35,7 +35,7 @@ def test_refresh():
|
|||
def test_find_exists():
|
||||
database = ianardap.IanaRDAPDatabase()
|
||||
server = database.find("www.foobar.ar")
|
||||
assert server == "https://rdap.nic.ar/"
|
||||
assert server == ["https://rdap.nic.ar/"]
|
||||
|
||||
def test_find_not_exists():
|
||||
database = ianardap.IanaRDAPDatabase()
|
||||
|
|
Loading…
Reference in New Issue