[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/05: Memoize computing tokens
From: |
Christopher Baines |
Subject: |
02/05: Memoize computing tokens |
Date: |
Tue, 5 Dec 2023 16:11:11 -0500 (EST) |
cbaines pushed a commit to branch master
in repository data-service.
commit b9026488ed53e76c5b8ff741a76e6b8c57256d4a
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Fri Nov 24 16:11:57 2023 +0000
Memoize computing tokens
As I'm not sure how expensive this is, but it doesn't need doing for every
request.
---
.../model/build-server-token-seed.scm | 29 ++++++++++++----------
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git a/guix-data-service/model/build-server-token-seed.scm
b/guix-data-service/model/build-server-token-seed.scm
index c26f796..59cce2c 100644
--- a/guix-data-service/model/build-server-token-seed.scm
+++ b/guix-data-service/model/build-server-token-seed.scm
@@ -21,21 +21,24 @@
#:use-module (squee)
#:use-module (gcrypt hash)
#:use-module (gcrypt base64)
+ #:use-module (guix memoization)
#:export (compute-tokens-for-build-server))
-(define (compute-token secret-key-base build-server-id token-seed)
- (let ((source-string
- (simple-format #f "~A:~A:~A"
- secret-key-base
- build-server-id
- token-seed)))
- (string-filter
- ;; Remove the + / and = to make handling the value easier
- char-set:letter+digit
- (base64-encode
- (bytevector-hash
- (string->utf8 source-string)
- (hash-algorithm sha1))))))
+(define compute-token
+ (memoize
+ (lambda (secret-key-base build-server-id token-seed)
+ (let ((source-string
+ (simple-format #f "~A:~A:~A"
+ secret-key-base
+ build-server-id
+ token-seed)))
+ (string-filter
+ ;; Remove the + / and = to make handling the value easier
+ char-set:letter+digit
+ (base64-encode
+ (bytevector-hash
+ (string->utf8 source-string)
+ (hash-algorithm sha1))))))))
(define (compute-tokens-for-build-server conn secret-key-base build-server-id)
(define query