mirror of
				https://github.com/cloudreve/cloudreve.git
				synced 2025-11-04 13:16:02 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			955 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			955 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package onedrive
 | 
						|
 | 
						|
import "time"
 | 
						|
 | 
						|
// Option 发送请求的额外设置
 | 
						|
type Option interface {
 | 
						|
	apply(*options)
 | 
						|
}
 | 
						|
 | 
						|
type options struct {
 | 
						|
	redirect         string
 | 
						|
	code             string
 | 
						|
	refreshToken     string
 | 
						|
	conflictBehavior string
 | 
						|
	expires          time.Time
 | 
						|
}
 | 
						|
 | 
						|
type optionFunc func(*options)
 | 
						|
 | 
						|
// WithCode 设置接口Code
 | 
						|
func WithCode(t string) Option {
 | 
						|
	return optionFunc(func(o *options) {
 | 
						|
		o.code = t
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
// WithRefreshToken 设置接口RefreshToken
 | 
						|
func WithRefreshToken(t string) Option {
 | 
						|
	return optionFunc(func(o *options) {
 | 
						|
		o.refreshToken = t
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
// WithConflictBehavior 设置文件重名后的处理方式
 | 
						|
func WithConflictBehavior(t string) Option {
 | 
						|
	return optionFunc(func(o *options) {
 | 
						|
		o.conflictBehavior = t
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
func (f optionFunc) apply(o *options) {
 | 
						|
	f(o)
 | 
						|
}
 | 
						|
 | 
						|
func newDefaultOption() *options {
 | 
						|
	return &options{
 | 
						|
		conflictBehavior: "fail",
 | 
						|
		expires:          time.Now().UTC().Add(time.Duration(1) * time.Hour),
 | 
						|
	}
 | 
						|
}
 |