guix-commits
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]