aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage/guix-data-service.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-qa-frontpage/guix-data-service.scm')
-rw-r--r--guix-qa-frontpage/guix-data-service.scm40
1 files changed, 40 insertions, 0 deletions
diff --git a/guix-qa-frontpage/guix-data-service.scm b/guix-qa-frontpage/guix-data-service.scm
index 8d3fa80..8004aa4 100644
--- a/guix-qa-frontpage/guix-data-service.scm
+++ b/guix-qa-frontpage/guix-data-service.scm
@@ -21,6 +21,7 @@
guix-data-service-error-url
guix-data-service-error->sexp
+ guix-data-service-error-summary
guix-data-service-request
@@ -92,6 +93,45 @@
(guix-data-service-error-response-body exn)
"query_parameters")))))
+(define (guix-data-service-error-summary exn)
+ (cond
+ ((string=? (or (assoc-ref (guix-data-service-error-response-body exn)
+ "error")
+ "")
+ "invalid query")
+ (string-join
+ (filter-map
+ (match-lambda
+ ((param . val)
+ (and=>
+ (assoc-ref val "invalid_value")
+ (lambda (value)
+ (let ((message
+ (assoc-ref val "message")))
+ (simple-format
+ #f
+ "~A: ~A"
+ param
+ ;; 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
+ (simple-format #f "~A" (guix-data-service-error-response-body exn)))))
+
(define* (guix-data-service-request url #:key (retry-times 0) (retry-delay 5))
(define (make-request)
(let ((port