/
option.go
104 lines (87 loc) · 1.74 KB
/
option.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package vod
import (
"errors"
"net/url"
)
const (
FORMAT_JPEG = "jpeg"
FORMAT_PNG = "png"
FORMAT_WEBP = "webp"
FORMAT_AWEBP = "awebp"
FORMAT_GIF = "gif"
FORMAT_HEIC = "heic"
FORMAT_ORIGINAL = "image"
HTTP = "http"
HTTPS = "https"
KEY_SIG = "sig"
VOD_TPL_OBJ = "tplv-vod-obj"
VOD_TPL_NOOP = "tplv-vod-noop"
VOD_TPL_RESIZE = "tplv-vod-rs"
VOD_TPL_CENTER_CROP = "tplv-vod-cc"
VOD_TPL_SMART_CROP = "tplv-vod-cs"
VOD_TPL_SIG = "tplv-bd-sig"
)
var (
ErrKvSig = errors.New("Input kv already has sig query")
)
type option struct {
isHttps bool
format string
sigKey string
tpl string
w, h int
kv url.Values
}
type OptionFun func(*option)
func WithHttps() OptionFun {
return func(opt *option) {
opt.isHttps = true
}
}
func WithFormat(format string) OptionFun {
return func(opt *option) {
opt.format = format
}
}
func WithSig(key string) OptionFun {
return func(opt *option) {
opt.sigKey = key
}
}
//kv used in querystring,the key Must not use "sig"
func WithKV(kv url.Values) OptionFun {
return func(opt *option) {
opt.kv = kv
}
}
func WithVodTplObj() OptionFun {
return func(opt *option) {
opt.tpl = VOD_TPL_OBJ
}
}
func WithVodNoop() OptionFun {
return func(opt *option) {
opt.tpl = VOD_TPL_NOOP
}
}
func WithVodTplCenterCrop(width, height int) OptionFun {
return func(opt *option) {
opt.tpl = VOD_TPL_CENTER_CROP
opt.w = width
opt.h = height
}
}
func WithVodTplSmartCrop(width, height int) OptionFun {
return func(opt *option) {
opt.tpl = VOD_TPL_SMART_CROP
opt.w = width
opt.h = height
}
}
func WithVodTplResize(width, height int) OptionFun {
return func(opt *option) {
opt.tpl = VOD_TPL_RESIZE
opt.w = width
opt.h = height
}
}