diff options
Diffstat (limited to 'guix-data-service/web/controller.scm')
-rw-r--r-- | guix-data-service/web/controller.scm | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/guix-data-service/web/controller.scm b/guix-data-service/web/controller.scm index 71ca560..e63a75d 100644 --- a/guix-data-service/web/controller.scm +++ b/guix-data-service/web/controller.scm @@ -278,6 +278,39 @@ #:header-link header-link) #:extra-headers http-headers-for-unchanging-content)))))) +(define* (render-revision-package mime-types + conn + commit-hash + name + #:key + (path-base "/revision/") + (header-text + `("Revision " + (samp ,commit-hash))) + (header-link + (string-append + "/revision/" commit-hash))) + (let ((package-versions + (select-package-versions-for-revision conn + commit-hash + name))) + (case (most-appropriate-mime-type + '(application/json text/html) + mime-types) + ((application/json) + (render-json + `((versions . ,(list->vector package-versions))) + #:extra-headers http-headers-for-unchanging-content)) + (else + (render-html + #:sxml (view-revision-package commit-hash + name + package-versions + #:path-base path-base + #:header-text header-text + #:header-link header-link) + #:extra-headers http-headers-for-unchanging-content))))) + (define* (render-revision-package-version mime-types conn commit-hash @@ -811,6 +844,15 @@ (render-unknown-revision mime-types conn commit-hash))) + (('GET "revision" commit-hash "package" name) + (if (guix-commit-exists? conn commit-hash) + (render-revision-package mime-types + conn + commit-hash + name) + (render-unknown-revision mime-types + conn + commit-hash))) (('GET "revision" commit-hash "package" name version) (if (guix-commit-exists? conn commit-hash) (render-revision-package-version mime-types |