...
1 package pagination
2
3 import (
4 "encoding/base64"
5 "encoding/gob"
6 "errors"
7 "fmt"
8 "io"
9 "strings"
10 )
11
12
13 func EncodePageTokenStruct(v interface{}) string {
14 var b strings.Builder
15 base64Encoder := base64.NewEncoder(base64.URLEncoding, &b)
16 gobEncoder := gob.NewEncoder(base64Encoder)
17 _ = gobEncoder.Encode(v)
18 _ = base64Encoder.Close()
19 return b.String()
20 }
21
22
23 func DecodePageTokenStruct(s string, v interface{}) error {
24 dec := gob.NewDecoder(base64.NewDecoder(base64.URLEncoding, strings.NewReader(s)))
25 if err := dec.Decode(v); err != nil && !errors.Is(err, io.EOF) {
26 return fmt.Errorf("decode page token struct: %w", err)
27 }
28 return nil
29 }
30
View as plain text