""" Contains Artix class """ import re from datetime import datetime import requests from project import Project from shared import CSC_MIRROR def _get_date(url): req = requests.head(url) req.raise_for_status() return datetime.strptime(req.headers['Last-Modified'], '%a, %d %b %Y %H:%M:%S %Z') class Artix(Project): """Artix class""" @classmethod def check(cls, data, project, current_time): csc_url = CSC_MIRROR + data[project]['csc'] upstream_url = data[project]['upstream'] req = requests.get(upstream_url) req.raise_for_status() index = req.text repos = re.findall(r'href="(\w+)/"', index); outdated_since = None for repo in repos: # Good enough for now, we can change it if Artix gets more arch in the future db_path = repo + '/os/x86_64/' + repo + '.db' upstream_date = _get_date(data[project]['upstream'] + db_path) csc_date = _get_date(CSC_MIRROR + data[project]['csc'] + db_path) if csc_date < upstream_date: if outdated_since is None or upstream_date < outdated_since: outdated_since = upstream_date if outdated_since is not None: data[project]['out_of_sync_since'] = int(outdated_since.timestamp()) return (datetime.now() - outdated_since).total_seconds() < data[project]['out_of_sync_interval'] return True