Skip to content

Commit

Permalink
Stopped using mtime.
Browse files Browse the repository at this point in the history
  • Loading branch information
rohe committed Feb 27, 2024
1 parent 2c1d18d commit 11cbbb3
Showing 1 changed file with 51 additions and 9 deletions.
60 changes: 51 additions & 9 deletions src/idpyoidc/storage/listfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
logger = logging.getLogger(__name__)


class ReadOnlyListFile(object):
class ReadOnlyListFileMtime(object):

def __init__(self, file_name):
self.file_name = file_name
Expand All @@ -16,24 +16,25 @@ def __init__(self, file_name):
if not os.path.exists(file_name):
fp = open(file_name, "x")
fp.close()
self.lst = []
_lst = []
else:
self.lst = self._read_info(self.file_name)
_lst = self._read_info(self.file_name)

def __getitem__(self, item):
if self.is_changed(self.file_name):
self.lst = self._read_info(self.file_name)
if self.lst:
return self.lst[item]
_lst = self._read_info(self.file_name)
if _lst:
return _lst[item]
else:
return None

def __len__(self):
if self.is_changed(self.file_name):
self.lst = self._read_info(self.file_name)
if self.lst is None or self.lst == []:
_lst = self._read_info(self.file_name)
if _lst is None or _lst == []:
return 0

return len(self.lst)
return len(_lst)

@staticmethod
def get_mtime(fname):
Expand Down Expand Up @@ -92,3 +93,44 @@ def _read_info(self, fname):
_msg = f"No such file: '{fname}'"
logger.error(_msg)
return None


class ReadOnlyListFile(object):

def __init__(self, file_name):
self.file_name = file_name

if not os.path.exists(file_name):
fp = open(file_name, "x")
fp.close()

def __getitem__(self, item):
_lst = self._read_info(self.file_name)
if _lst:
return _lst[item]
else:
return None

def __len__(self):
_lst = self._read_info(self.file_name)
if _lst is None or _lst == []:
return 0

return len(_lst)

def _read_info(self, fname):
if os.path.isfile(fname):
try:
lock = FileLock(f"{fname}.lock")
with lock:
fp = open(fname, "r")
info = [x.strip() for x in fp.readlines()]
lock.release()
return info or None
except Exception as err:
logger.error(err)
raise
else:
_msg = f"No such file: '{fname}'"
logger.error(_msg)
return None

0 comments on commit 11cbbb3

Please sign in to comment.