index.tmpl: Update
[fbfp.git] / misc.go
blob70e5a4f6d7d00af52798b35a32936ae38a1ee6c2
1 /*
2 * Misc function definitions for fbfp.
4 * Copyright (C) 2024 Runxi Yu <https://runxiyu.org>
5 * SPDX-License-Identifier: AGPL-3.0-or-later
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 package main
23 import (
24 "crypto/rand"
25 "encoding/base64"
28 func e(err error) {
29 if err != nil {
30 panic(err)
34 func er[v_t any](v v_t, err error) v_t {
35 if err != nil {
36 panic(err)
38 return v
42 * Generate a random url-safe string.
43 * Note that the "len" parameter specifies the number of bytes taken from the
44 * random source divided by three and does NOT represent the length of the
45 * encoded string.
47 func random(len int) string {
48 r := make([]byte, 3*len)
49 rand.Read(r)
50 return base64.RawURLEncoding.EncodeToString(r)