Memoize computing tokens

As I'm not sure how expensive this is, but it doesn't need doing for every
request.
This commit is contained in:
Christopher Baines 2023-11-24 16:11:57 +00:00
parent 241a704db1
commit b9026488ed
1 changed files with 16 additions and 13 deletions

View File

@ -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