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:
parent
241a704db1
commit
b9026488ed
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue