feat: add remote_public_keys_timeout option in order to set the time after which the retrieval of external public keys should be interrupted

This commit is contained in:
cătălin 2023-11-29 18:15:34 +01:00
commit 4fb1fff521
Signed by: catalin
GPG key ID: 0178DF42F43E5FD2
6 changed files with 16 additions and 7 deletions

View file

@ -1 +1 @@
__version__ = "0.4.2a1"
__version__ = "0.4.2a2"

View file

@ -26,6 +26,8 @@ class Settings(BaseSettings):
`[~/.ssh/id_ed25519.pub]`
cache_path (DirectoryPath): a *valid* path used to cache some stuff,
particularly remote public keys. Defaults to $XDG_CACHE_HOME/halig
remote_public_keys_timeout (float): time after which the retrieval of external public keys
(e.g. github ssh keys) should be interrupted. Defaults to 0.5.
"""
notebooks_root_path: DirectoryPath
@ -38,12 +40,12 @@ class Settings(BaseSettings):
],
)
cache_path: DirectoryPath = Field(
...,
default_factory=lambda: platformdirs.user_cache_path(
"halig",
ensure_exists=True,
),
)
remote_public_keys_timeout: float = 0.5
@field_validator("identity_paths", "recipient_paths", mode="before")
@classmethod
@ -83,7 +85,10 @@ class Settings(BaseSettings):
with hishel.CacheClient(
storage=hishel.FileStorage(base_path=self.cache_path / "hishel"),
) as client:
response = client.get(str(path))
response = client.get(
str(path),
timeout=self.remote_public_keys_timeout,
)
if response.status_code == httpx.codes.OK:
for line in response.content.decode().split("\n"):
if line:

View file

@ -16,7 +16,8 @@ def test_edit_raises_invalid_age_file(notes, settings: Settings):
def test_edit_current_note(mock_edit, current_note, settings: Settings, encryptor):
edit_command = EditCommand(
note_path=settings.notebooks_root_path, settings=settings,
note_path=settings.notebooks_root_path,
settings=settings,
)
assert edit_command.note_path == current_note
edit_command.run()

View file

@ -35,7 +35,9 @@ def test_import(unencrypted_notes: Path, command: ImportCommand, encryptor: Encr
def test_import_unlink(
unencrypted_notes: Path, command: ImportCommand, encryptor: Encryptor,
unencrypted_notes: Path,
command: ImportCommand,
encryptor: Encryptor,
):
command.unlink = True
command.run()

View file

@ -26,7 +26,8 @@ def test_show_raises_note_path_is_not_age_valid(notes, settings: Settings):
def test_show_current_note(current_note, settings):
show_command = ShowCommand(
note_path=settings.notebooks_root_path, settings=settings,
note_path=settings.notebooks_root_path,
settings=settings,
)
assert show_command.note_path == current_note
assert show_command.decrypt() == "foo"

View file

@ -24,7 +24,7 @@ def test_instance_encryptor_from_age_keys(halig_path, notebooks_path):
f.write(str(identity.to_public()))
recipient_paths.append(recipient_path)
#cache_path = platformdirs.user_cache_path("halig", ensure_exists=True)
# cache_path = platformdirs.user_cache_path("halig", ensure_exists=True)
settings = Settings(
notebooks_root_path=notebooks_path,
identity_paths=identity_paths,