PK!Mձencapsia_api/__init__.pyfrom encapsia_api.rest import EncapsiaApi, EncapsiaApiError # NOQA from encapsia_api.credentials import CredentialsStore # NOQA #: Keep in sync with git tag and package version in pyproject.toml. __version__ = "0.1.11" PK!䖑encapsia_api/credentials.pyfrom pathlib import Path import toml class CredentialsStore: CREDENTIALS_STORE = Path().home() / ".encapsia" / "credentials.toml" def __init__(self): # Create directory and file if they don't exist aleady self.CREDENTIALS_STORE.parent.mkdir(mode=0o700, exist_ok=True) self.CREDENTIALS_STORE.touch(mode=0o600, exist_ok=True) self._store_timestamp = -1 self._store = None self._refresh() def _refresh(self): current_timestamp = self.CREDENTIALS_STORE.stat().st_mtime if self._store_timestamp < current_timestamp: self._store = toml.loads(self.CREDENTIALS_STORE.read_text()) self._store_timestamp = current_timestamp def _save(self): self.CREDENTIALS_STORE.write_text(toml.dumps(self._store)) self._store_timestamp = self.CREDENTIALS_STORE.stat().st_mtime def _get(self, label): return self._store[label] def get(self, label): self._refresh() d = self._get(label) return d["host"], d["token"] def _set(self, label, host, token): self._store[label] = {"host": host, "token": token} self._save() def set(self, label, host, token): self._refresh() self._set(label, host, token) def remove(self, label): self._refresh() if label in self._store: del self._store[label] self._save() PK!){4U AU0;EB'g0UDu,zСI];$VcEXEN{oZ1õol6dl2ZYl>1ӡɩK>Im2:iN>)jL/;qߍMvA<VgPm=q]<_,/r.Mo)%S^7xD* #u u?PH'lR0'}>I6Ũ!'"&t5o7޷o$f4!V/f-sK!ֈڶ|T{/FP-;=M@`2Zc Q3jJR[Qnv SsPV?PK!Hއ\/$encapsia_api-0.1.11.dist-info/RECORDKr0}V,+ aۍ3v;UFQǴ}ϚcQ㢸#e xA#}z"׋&v8UOQJSMIG}ޡ>23>;!%fS)MPa}p=SMBqg4t0_6~>f0(yZu~vj]e+qzu bsᄹz[=F`]:1 ffZ ,rkʭ =US=oMշKdJ\N/~w ER~rµj PK!Mձencapsia_api/__init__.pyPK!䖑encapsia_api/credentials.pyPK!