package halalcloud | |
import "google.golang.org/grpc" | |
func defaultOptions() halalOptions { | |
return halalOptions{ | |
// onRefreshTokenRefreshed: func(string) {}, | |
grpcOptions: []grpc.DialOption{ | |
grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(1024 * 1024 * 32)), | |
// grpc.WithMaxMsgSize(1024 * 1024 * 1024), | |
}, | |
} | |
} | |
type HalalOption interface { | |
apply(*halalOptions) | |
} | |
// halalOptions configure a RPC call. halalOptions are set by the HalalOption | |
// values passed to Dial. | |
type halalOptions struct { | |
onTokenRefreshed func(accessToken string, accessTokenExpiredAt int64, refreshToken string, refreshTokenExpiredAt int64) | |
grpcOptions []grpc.DialOption | |
} | |
// funcDialOption wraps a function that modifies halalOptions into an | |
// implementation of the DialOption interface. | |
type funcDialOption struct { | |
f func(*halalOptions) | |
} | |
func (fdo *funcDialOption) apply(do *halalOptions) { | |
fdo.f(do) | |
} | |
func newFuncDialOption(f func(*halalOptions)) *funcDialOption { | |
return &funcDialOption{ | |
f: f, | |
} | |
} | |
func WithRefreshTokenRefreshedCallback(s func(accessToken string, accessTokenExpiredAt int64, refreshToken string, refreshTokenExpiredAt int64)) HalalOption { | |
return newFuncDialOption(func(o *halalOptions) { | |
o.onTokenRefreshed = s | |
}) | |
} | |
func WithGrpcDialOptions(opts ...grpc.DialOption) HalalOption { | |
return newFuncDialOption(func(o *halalOptions) { | |
o.grpcOptions = opts | |
}) | |
} | |