diff options
Diffstat (limited to 'guix-qa-frontpage')
-rw-r--r-- | guix-qa-frontpage/guix-data-service.scm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/guix-qa-frontpage/guix-data-service.scm b/guix-qa-frontpage/guix-data-service.scm index 77a4960..acd4ad7 100644 --- a/guix-qa-frontpage/guix-data-service.scm +++ b/guix-qa-frontpage/guix-data-service.scm @@ -17,6 +17,8 @@ guix-data-service-error-response-body guix-data-service-error-response-code + guix-data-service-error->sexp + revision-derivation-changes-url revision-derivation-changes @@ -85,6 +87,37 @@ (and (guix-data-service-error? exn) (< (guix-data-service-error-response-code exn) 500))))) +(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) + (else + 'unknown)))))))))) + (assoc-ref + (guix-data-service-error-response-body exn) + "query_parameters"))))) + (define* (revision-derivation-changes-url base-and-target-refs #:key systems) (string-append |