Skip to content

Commit afdebab

Browse files
committed
rekor: Re-use the error class for both clients
Signed-off-by: Jussi Kukkonen <[email protected]>
1 parent 4e9c733 commit afdebab

File tree

3 files changed

+25
-45
lines changed

3 files changed

+25
-45
lines changed

sigstore/_internal/rekor/__init__.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from typing import Any, NewType
2424

2525
import rekor_types
26+
import requests
2627
from cryptography.x509 import Certificate
2728

2829
from sigstore._utils import base64_encode_pem_cert
@@ -37,6 +38,27 @@
3738
EntryRequest = NewType("EntryRequest", dict[str, Any])
3839

3940

41+
class RekorClientError(Exception):
42+
"""
43+
A generic error in the Rekor client.
44+
"""
45+
46+
def __init__(self, http_error: requests.HTTPError):
47+
"""
48+
Create a new `RekorClientError` from the given `requests.HTTPError`.
49+
"""
50+
if http_error.response is not None:
51+
try:
52+
error = rekor_types.Error.model_validate_json(http_error.response.text)
53+
super().__init__(f"{error.code}: {error.message}")
54+
except Exception:
55+
super().__init__(
56+
f"Rekor returned an unknown error with HTTP {http_error.response.status_code}"
57+
)
58+
else:
59+
super().__init__(f"Unexpected Rekor error: {http_error}")
60+
61+
4062
class RekorLogSubmitter(ABC):
4163
"""Abstract class to represent a Rekor log entry submitter.
4264

sigstore/_internal/rekor/client.py

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
from sigstore._internal import USER_AGENT
3434
from sigstore._internal.rekor import (
3535
EntryRequest,
36+
RekorClientError,
3637
RekorLogSubmitter,
3738
)
3839
from sigstore.dsse import Envelope
@@ -71,27 +72,6 @@ def from_response(cls, dict_: dict[str, Any]) -> RekorLogInfo:
7172
)
7273

7374

74-
class RekorClientError(Exception):
75-
"""
76-
A generic error in the Rekor client.
77-
"""
78-
79-
def __init__(self, http_error: requests.HTTPError):
80-
"""
81-
Create a new `RekorClientError` from the given `requests.HTTPError`.
82-
"""
83-
if http_error.response is not None:
84-
try:
85-
error = rekor_types.Error.model_validate_json(http_error.response.text)
86-
super().__init__(f"{error.code}: {error.message}")
87-
except Exception:
88-
super().__init__(
89-
f"Rekor returned an unknown error with HTTP {http_error.response.status_code}"
90-
)
91-
else:
92-
super().__init__(f"Unexpected Rekor error: {http_error}")
93-
94-
9575
class _Endpoint(ABC):
9676
def __init__(self, url: str, session: requests.Session) -> None:
9777
self.url = url

sigstore/_internal/rekor/client_v2.py

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import logging
2323
from typing import cast
2424

25-
import rekor_types
2625
import requests
2726
from cryptography.hazmat.primitives import serialization
2827
from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurvePublicKey
@@ -32,7 +31,7 @@
3231
from sigstore_protobuf_specs.io import intoto
3332

3433
from sigstore._internal import USER_AGENT
35-
from sigstore._internal.rekor import EntryRequest, RekorLogSubmitter
34+
from sigstore._internal.rekor import EntryRequest, RekorClientError, RekorLogSubmitter
3635
from sigstore.dsse import Envelope
3736
from sigstore.hashes import Hashed
3837
from sigstore.models import LogEntry
@@ -159,30 +158,9 @@ def _build_dsse_request(
159158
encoding=serialization.Encoding.DER
160159
)
161160
),
162-
key_details=cls._get_key_details(certificate)
161+
key_details=cls._get_key_details(certificate),
163162
)
164163
],
165164
)
166165
)
167166
return EntryRequest(req.to_dict())
168-
169-
170-
class RekorClientError(Exception):
171-
"""
172-
A generic error in the Rekor client.
173-
"""
174-
175-
def __init__(self, http_error: requests.HTTPError):
176-
"""
177-
Create a new `RekorClientError` from the given `requests.HTTPError`.
178-
"""
179-
if http_error.response is not None:
180-
try:
181-
error = rekor_types.Error.model_validate_json(http_error.response.text)
182-
super().__init__(f"{error.code}: {error.message}")
183-
except Exception:
184-
super().__init__(
185-
f"Rekor returned an unknown error with HTTP {http_error.response.status_code}"
186-
)
187-
else:
188-
super().__init__(f"Unexpected Rekor error: {http_error}")

0 commit comments

Comments
 (0)