aboutsummaryrefslogtreecommitdiff
path: root/repos/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'repos/base.py')
-rw-r--r--repos/base.py20
1 files changed, 10 insertions, 10 deletions
diff --git a/repos/base.py b/repos/base.py
index c20853a..1b4c42b 100644
--- a/repos/base.py
+++ b/repos/base.py
@@ -1,6 +1,5 @@
from dataclasses import dataclass, asdict as dataclass_asdict
from functools import total_ordering
-import gzip
import json
from pathlib import Path
import re
@@ -9,6 +8,8 @@ from typing import Any, Callable, Mapping, Optional
import requests
import semver
+from . import db
+
__all__ = [
'Repository',
'slug',
@@ -79,7 +80,7 @@ class Repository:
def _cache_file(self, name: str) -> Path:
return self._cache_dir() / name
- def get_versions(self) -> Mapping[str, Version]:
+ def update(self):
self._cache_dir().mkdir(parents=True, exist_ok=True)
headers = dict()
@@ -109,12 +110,11 @@ class Repository:
set_etag = response.headers['ETag']
etag_file.write_text(set_etag)
- parsed_file = self._cache_file('parsed.json.gz')
- if response.status_code != requests.codes.not_modified or not parsed_file.exists():
parsed_data = self.parse(downloaded_file)
- with gzip.open(parsed_file, 'wt') as f:
- json.dump(parsed_data, f, cls=JSONEncoder)
- return parsed_data
- else:
- with gzip.open(parsed_file, 'rt') as f:
- return json.load(f, cls=JSONDecoder)
+ db.write(self.full_name(), parsed_data)
+
+ def get_version(self, package_name: str) -> Optional[Version]:
+ db_result = db.read(self.full_name(), package_name)
+ if db_result is None:
+ return None
+ return Version(**db_result)