aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2024-06-22 10:32:57 +0100
committerChristopher Baines <mail@cbaines.net>2024-06-22 10:43:09 +0100
commitb049a85b186744c26cb32efdaa02e33453b3ba7c (patch)
treed14eb8843ef507d870e732017a89c9d0cd88de00
parente33931e27e2b7abb0c2529814d94cc17988e7f46 (diff)
downloadqa-frontpage-b049a85b186744c26cb32efdaa02e33453b3ba7c.tar
qa-frontpage-b049a85b186744c26cb32efdaa02e33453b3ba7c.tar.gz
Handle more error cases in guix-data-service-error->sexp
-rw-r--r--guix-qa-frontpage/guix-data-service.scm71
1 files changed, 40 insertions, 31 deletions
diff --git a/guix-qa-frontpage/guix-data-service.scm b/guix-qa-frontpage/guix-data-service.scm
index 8004aa4..794aefe 100644
--- a/guix-qa-frontpage/guix-data-service.scm
+++ b/guix-qa-frontpage/guix-data-service.scm
@@ -61,37 +61,46 @@
(url guix-data-service-error-url))
(define (guix-data-service-error->sexp exn)
- `((exception . guix-data-service-invalid-parameters)
- (invalid_query_parameters
- .
- ,(filter-map
- (match-lambda
- ((param . val)
- (and=>
- (assoc-ref val "invalid_value")
- (lambda (value)
- (let ((message
- (assoc-ref val "message")))
- (cons
- param
- `((value . ,value)
- (error
- ;; Convert the HTML error messages
- ;; to something easier to handle
- . ,(cond
- ((string-contains message
- "failed to process revision")
- 'failed-to-process-revision)
- ((string-contains message
- "yet to process revision")
- 'yet-to-process-revision)
- ((string=? message "unknown commit")
- 'unknown-commit)
- (else
- 'unknown-error))))))))))
- (assoc-ref
- (guix-data-service-error-response-body exn)
- "query_parameters")))))
+ (cond
+ ((string=? (or (assoc-ref (guix-data-service-error-response-body exn)
+ "error")
+ "")
+ "invalid query")
+ `((exception . guix-data-service-invalid-parameters)
+ (invalid_query_parameters
+ .
+ ,(filter-map
+ (match-lambda
+ ((param . val)
+ (and=>
+ (assoc-ref val "invalid_value")
+ (lambda (value)
+ (let ((message
+ (assoc-ref val "message")))
+ (cons
+ param
+ `((value . ,value)
+ (error
+ ;; Convert the HTML error messages
+ ;; to something easier to handle
+ . ,(cond
+ ((string-contains message
+ "failed to process revision")
+ 'failed-to-process-revision)
+ ((string-contains message
+ "yet to process revision")
+ 'yet-to-process-revision)
+ ((string=? message "unknown commit")
+ 'unknown-commit)
+ (else
+ 'unknown-error))))))))))
+ (assoc-ref
+ (guix-data-service-error-response-body exn)
+ "query_parameters")))))
+ (else
+ `((exception . guix-data-service-exception)
+ (body . ,(guix-data-service-error-response-body exn))
+ (url . ,(guix-data-service-error-url exn))))))
(define (guix-data-service-error-summary exn)
(cond