Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/drivers/halalcloud/options.go
1986 views
1
package halalcloud
2
3
import "google.golang.org/grpc"
4
5
func defaultOptions() halalOptions {
6
return halalOptions{
7
// onRefreshTokenRefreshed: func(string) {},
8
grpcOptions: []grpc.DialOption{
9
grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(1024 * 1024 * 32)),
10
// grpc.WithMaxMsgSize(1024 * 1024 * 1024),
11
},
12
}
13
}
14
15
type HalalOption interface {
16
apply(*halalOptions)
17
}
18
19
// halalOptions configure a RPC call. halalOptions are set by the HalalOption
20
// values passed to Dial.
21
type halalOptions struct {
22
onTokenRefreshed func(accessToken string, accessTokenExpiredAt int64, refreshToken string, refreshTokenExpiredAt int64)
23
grpcOptions []grpc.DialOption
24
}
25
26
// funcDialOption wraps a function that modifies halalOptions into an
27
// implementation of the DialOption interface.
28
type funcDialOption struct {
29
f func(*halalOptions)
30
}
31
32
func (fdo *funcDialOption) apply(do *halalOptions) {
33
fdo.f(do)
34
}
35
36
func newFuncDialOption(f func(*halalOptions)) *funcDialOption {
37
return &funcDialOption{
38
f: f,
39
}
40
}
41
42
func WithRefreshTokenRefreshedCallback(s func(accessToken string, accessTokenExpiredAt int64, refreshToken string, refreshTokenExpiredAt int64)) HalalOption {
43
return newFuncDialOption(func(o *halalOptions) {
44
o.onTokenRefreshed = s
45
})
46
}
47
48
func WithGrpcDialOptions(opts ...grpc.DialOption) HalalOption {
49
return newFuncDialOption(func(o *halalOptions) {
50
o.grpcOptions = opts
51
})
52
}
53
54