Skip to content

Commit c6c0c08

Browse files
committed
Fix api paths in certapi client and server
1 parent 03d49bd commit c6c0c08

File tree

5 files changed

+15
-8
lines changed

5 files changed

+15
-8
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name="certapi",
5-
version="1.0.3",
5+
version="1.0.5",
66
packages=find_packages(where="src"),
77
package_dir={"": "src"},
88
install_requires=[

src/app.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,13 @@ def handle_renewal_queue_full_error(error: RenewalQueueFullError):
9898

9999
@api.errorhandler(Exception)
100100
def handle_generic_exception(error: Exception):
101+
from werkzeug.exceptions import HTTPException
102+
103+
if isinstance(error, HTTPException):
104+
# Prefer specific message from abort() or custom errors, fall back to generic description
105+
message = getattr(error, "data", {}).get("message") or error.description
106+
return {"message": message}, error.code
107+
101108
print(f"Unhandled Exception: {error}", file=sys.stderr)
102109
traceback.print_exc(file=sys.stderr)
103110
return {"message": "Internal Server Error", "error": str(error)}, 500

src/certapi/client/cert_manager_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def issue_certificate(
6969
params["renew_threshold_days"] = renew_threshold_days
7070
params["skip_failing"] = skip_failing
7171

72-
data = self._get("/obtain", params=params)
72+
data = self._get("/api/obtain", params=params)
7373
res = CertificateResponse.from_json(data)
7474

7575
if self.key_store:
@@ -93,7 +93,7 @@ def issue_certificate_for_csr(self, csr: Union[str, x509.CertificateSigningReque
9393
csr_pem = csr
9494

9595
response = requests.post(
96-
f"{self.base_url}/sign_csr", data=csr_pem, headers={"Content-Type": "application/x-pem-file"}
96+
f"{self.base_url}/api/sign_csr", data=csr_pem, headers={"Content-Type": "application/x-pem-file"}
9797
)
9898
response.raise_for_status()
9999
return response.text

src/certapi/server/cert_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def create_cert_resources(cert_ns, key_store):
3434
cert_list_parser = reqparse.RequestParser()
3535
cert_list_parser.add_argument("domain", type=str, help="Filter certificates by domain")
3636

37-
@cert_ns.route("/certs")
37+
@cert_ns.route("/")
3838
class CertList(Resource):
3939
@cert_ns.doc("list_certs")
4040
@cert_ns.expect(cert_list_parser)
@@ -94,7 +94,7 @@ def post(self):
9494
except Exception as e:
9595
cert_ns.abort(500, f"Error saving certificate: {e}")
9696

97-
@cert_ns.route("/certs/<string:cert_id>")
97+
@cert_ns.route("/<string:cert_id>")
9898
@cert_ns.param("cert_id", "The certificate identifier")
9999
class CertById(Resource):
100100
@cert_ns.doc("get_cert_by_id")

src/certapi/server/key_api.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def create_key_resources(key_ns, key_store):
2323
},
2424
)
2525

26-
@key_ns.route("/keys")
26+
@key_ns.route("/")
2727
class KeyList(Resource):
2828
@key_ns.doc("list_keys")
2929
@key_ns.marshal_list_with(key_model)
@@ -49,7 +49,7 @@ def post(self):
4949
except Exception as e:
5050
key_ns.abort(500, f"Error saving key: {e}")
5151

52-
@key_ns.route("/keys/<string:key_id>")
52+
@key_ns.route("/<string:key_id>")
5353
@key_ns.param("key_id", "The key identifier")
5454
class KeyById(Resource):
5555
@key_ns.doc("get_key_by_id")
@@ -62,7 +62,7 @@ def get(self, key_id):
6262
else:
6363
key_ns.abort(404, message="Key not found")
6464

65-
@key_ns.route("/keys/name/<string:name>")
65+
@key_ns.route("/name/<string:name>")
6666
@key_ns.param("name", "The key name")
6767
class KeyByName(Resource):
6868
@key_ns.doc("get_key_by_name")

0 commit comments

Comments
 (0)