diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2021-08-15 17:31:48 +0200 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2021-09-13 19:26:45 +0200 |
commit | 44d80f685c01887f4b804de670dd59b7dd3a7c5e (patch) | |
tree | f9b651f77308ad50fd72c0b3c79315d3b941fd35 /src | |
parent | e2b2b0654427d0a575a0c49ac69db07d5674417b (diff) |
Fix exceptions
Diffstat (limited to 'src')
-rw-r--r-- | src/scm/webid-oidc/jwk.scm | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/scm/webid-oidc/jwk.scm b/src/scm/webid-oidc/jwk.scm index 5b17f29..9c1425a 100644 --- a/src/scm/webid-oidc/jwk.scm +++ b/src/scm/webid-oidc/jwk.scm @@ -227,21 +227,28 @@ (define* (get-jwks uri #:key (http-get http-get)) (receive (response response-body) (http-get uri) (with-exception-handler - (lambda (cause) - (raise-unexpected-response response cause)) + (lambda (error) + (raise-exception + (make-not-a-jwks) + (make-exception-with-message + (if (exception-with-message? error) + (format #f (G_ "cannot fetch a JWKS: ~a") + (exception-message error)) + (format #f (G_ "cannot fetch a JWKS")))) + error)) (lambda () (unless (eqv? (response-code response) 200) - (raise-request-failed-unexpectedly - (response-code response) - (response-reason-phrase response))) + (fail (format #f (G_ "the request failed with ~s ~s") + (response-code response) + (response-reason-phrase response)))) (let ((content-type (response-content-type response))) (unless content-type - (raise-unexpected-header-value 'content-type content-type)) + (fail (format #f (G_ "missing content-type")))) (unless (and (eq? (car content-type) 'application/json) (or (equal? (assoc-ref (cdr content-type) 'charset) "utf-8") (not (assoc-ref (cdr content-type) 'charset)))) - (raise-unexpected-header-value 'content-type content-type)) + (fail (format #f (G_ "invalid content-type: ~s") content-type))) (unless (string? response-body) (set! response-body (utf8->string response-body))) (the-jwks (stubs:json-string->scm response-body))))))) |